window._bd_share_main.F.module("base/tangram", function (e, t) {
    var n, r = n = function () {
        var e, t = e = t || function (e, n) {
            return t.dom ? t.dom(e, n) : null
        };
        t.version = "2.0.2.5", t.guid = "$BAIDU$", t.key = "tangram_guid";
        var n = window[t.guid] = window[t.guid] || {};
        return (n.versions || (n.versions = [])).push(t.version), t.check = t.check || function () {
        }, t.lang = t.lang || {}, t.forEach = function (e, t, n) {
            var r, i, s;
            if (typeof t == "function" && e) {
                i = typeof e.length == "number" ? e.length : e.byteLength;
                if (typeof i == "number") {
                    if (Object.prototype.toString.call(e) === "[object Function]") return e;
                    for (r = 0; r < i; r++) s = e[r], s === undefined && (s = e.charAt && e.charAt(r)), t.call(n || null, s, r, e)
                } else if (typeof e == "number") for (r = 0; r < e; r++) t.call(n || null, r, r, r); else if (typeof e == "object") for (r in e) e.hasOwnProperty(r) && t.call(n || null, e[r], r, e)
            }
            return e
        }, t.type = function () {
            var e = {}, n = [, "HTMLElement", "Attribute", "Text", , , , , "Comment", "Document", , "DocumentFragment"],
                r = "Array Boolean Date Error Function Number RegExp String", i = {object: 1, "function": "1"},
                s = e.toString;
            return t.forEach(r.split(" "), function (n) {
                e["[object " + n + "]"] = n.toLowerCase(), t["is" + n] = function (e) {
                    return t.type(e) == n.toLowerCase()
                }
            }), function (t) {
                var r = typeof t;
                return i[r] ? t == null ? "null" : t._type_ || e[s.call(t)] || n[t.nodeType] || (t == t.window ? "Window" : "") || "object" : r
            }
        }(), t.isDate = function (e) {
            return t.type(e) == "date" && e.toString() != "Invalid Date" && !isNaN(e)
        }, t.isElement = function (e) {
            return t.type(e) == "HTMLElement"
        }, t.isEnumerable = function (e) {
            return e != null && (typeof e == "object" || ~Object.prototype.toString.call(e).indexOf("NodeList")) && (typeof e.length == "number" || typeof e.byteLength == "number" || typeof e[0] != "undefined")
        }, t.isNumber = function (e) {
            return t.type(e) == "number" && isFinite(e)
        }, t.isPlainObject = function (e) {
            var n, r = Object.prototype.hasOwnProperty;
            if (t.type(e) != "object") return !1;
            if (e.constructor && !r.call(e, "constructor") && !r.call(e.constructor.prototype, "isPrototypeOf")) return !1;
            for (n in e) ;
            return n === undefined || r.call(e, n)
        }, t.isObject = function (e) {
            return typeof e == "function" || typeof e == "object" && e != null
        }, t.extend = function (e, n) {
            var r, i, s, o, u, a = 1, f = arguments.length, l = e || {}, c, h;
            t.isBoolean(e) && (a = 2) && (l = n || {}), !t.isObject(l) && (l = {});
            for (; a < f; a++) {
                i = arguments[a];
                if (t.isObject(i)) for (s in i) {
                    o = l[s], u = i[s];
                    if (o === u) continue;
                    t.isBoolean(e) && e && u && (t.isPlainObject(u) || (c = t.isArray(u))) ? (c ? (c = !1, h = o && t.isArray(o) ? o : []) : h = o && t.isPlainObject(o) ? o : {}, l[s] = t.extend(e, h, u)) : u !== undefined && (l[s] = u)
                }
            }
            return l
        }, t.createChain = function (e, n, r) {
            var i = e == "dom" ? "$DOM" : "$" + e.charAt(0).toUpperCase() + e.substr(1), s = Array.prototype.slice,
                o = t[e];
            return o ? o : (o = t[e] = n || function (n) {
                return t.extend(n, t[e].fn)
            }, o.extend = function (n) {
                var r;
                for (r in n) (function (n) {
                    n != "splice" && (o[n] = function () {
                        var r = arguments[0];
                        e == "dom" && t.type(r) == "string" && (r = "#" + r);
                        var i = o(r), u = i[n].apply(i, s.call(arguments, 1));
                        return t.type(u) == "$DOM" ? u.get(0) : u
                    })
                })(r);
                return t.extend(t[e].fn, n)
            }, t[e][i] = t[e][i] || r || function () {
            }, o.fn = t[e][i].prototype, o)
        }, t.overwrite = function (e, t, n) {
            for (var r = t.length - 1; r > -1; r--) e.prototype[t[r]] = n(t[r]);
            return e
        }, t.object = t.object || {}, t.object.isPlain = t.isPlainObject, t.createChain("string", function (e) {
            var n = t.type(e), r = new String(~"string|number".indexOf(n) ? e : n), i = String.prototype;
            return t.forEach(t.string.$String.prototype, function (e, t) {
                i[t] || (r[t] = e)
            }), r
        }), t.string.extend({
            trim: function () {
                var e = new RegExp("(^[\\s\\t\\xa0\\u3000]+)|([\\u3000\\xa0\\s\\t]+$)", "g");
                return function () {
                    return this.replace(e, "")
                }
            }()
        }), t.createChain("array", function (e) {
            var n = t.array.$Array.prototype, r = Array.prototype, i;
            t.type(e) != "array" && (e = []);
            for (i in n) e[i] = n[i];
            return e
        }), t.overwrite(t.array.$Array, "concat slice".split(" "), function (e) {
            return function () {
                return t.array(Array.prototype[e].apply(this, arguments))
            }
        }), t.array.extend({
            indexOf: function (e, n) {
                t.check(".+(,number)?", "baidu.array.indexOf");
                var r = this.length;
                (n |= 0) < 0 && (n = Math.max(0, r + n));
                for (; n < r; n++) if (n in this && this[n] === e) return n;
                return -1
            }
        }), t.createChain("Callbacks", function (e) {
            var n = e;
            return t.type(e) === "string" && (n = {}, t.forEach(e.split(/\s/), function (e) {
                n[e] = !0
            })), new t.Callbacks.$Callbacks(n)
        }, function (e) {
            var n = t.extend({}, e || {}), r = [], i = [], s = 0, o, u, a, f, l = function (e, t) {
                var u, l;
                if (!i || !r) return;
                o = n.memory && e, a = !0, i.push(e);
                if (f) return;
                f = !0;
                while (u = i.shift()) for (s = t || 0; l = r[s]; s++) if (l.apply(u[0], u[1]) === !1 && n.stopOnFalse) {
                    o = !1;
                    break
                }
                f = !1, n.once && (r = [])
            }, c = {
                add: function () {
                    if (!r) return this;
                    var e = r && r.length;
                    return function i(e) {
                        var s = e.length, o, u;
                        for (var a = 0, u; a < s; a++) {
                            if (!(u = e[a])) continue;
                            o = t.type(u), o === "function" ? (!n.unique || !c.has(u)) && r.push(u) : u && u.length && o !== "string" && i(u)
                        }
                    }(arguments), !f && o && l(o, e), this
                }, remove: function () {
                    if (!r) return this;
                    var e;
                    return t.forEach(arguments, function (n) {
                        while ((e = t.array(r).indexOf(n)) > -1) r.splice(e, 1), f && e < s && s--
                    }), this
                }, has: function (e) {
                    return t.array(r).indexOf(e) > -1
                }, empty: function () {
                    return r = [], this
                }, disable: function () {
                    return r = i = o = undefined, this
                }, disabled: function () {
                    return !r
                }, lock: function () {
                    return u = !0, !o && c.disable(), this
                }, fired: function () {
                    return a
                }, fireWith: function (e, t) {
                    return a && n.once || u ? this : (t = t || [], t = [e, t.slice ? t.slice() : t], l(t), this)
                }, fire: function () {
                    return c.fireWith(this, arguments), this
                }
            };
            return c
        }), t.createChain("Deferred", function (e) {
            return new t.Deferred.$Deferred(e)
        }, function (e) {
            var n = this, r = "pending",
                i = [["resolve", "done", t.Callbacks("once memory"), "resolved"], ["reject", "fail", t.Callbacks("once memory"), "rejected"], ["notify", "progress", t.Callbacks("memory")]],
                s = {
                    state: function () {
                        return r
                    }, always: function () {
                        return n.done(arguments).fail(arguments), this
                    }, then: function () {
                        var e = arguments;
                        return t.Deferred(function (r) {
                            t.forEach(i, function (i, s) {
                                var o = i[0], u = e[s];
                                n[i[1]](t.type(u) === "function" ? function () {
                                    var e = u.apply(this, arguments);
                                    e && t.type(e.promise) === "function" ? e.promise().done(r.resolve).fail(r.reject).progress(r.notify) : r[o + "With"](this === n ? r : this, [e])
                                } : r[o])
                            })
                        }).promise()
                    }, promise: function (e) {
                        return e != null ? t.extend(e, s) : s
                    }
                };
            s.pipe = s.then, t.forEach(i, function (e, t) {
                var o = e[2], u = e[3];
                s[e[1]] = o.add, u && o.add(function () {
                    r = u
                }, i[t ^ 1][2].disable, i[2][2].lock), n[e[0]] = o.fire, n[e[0] + "With"] = o.fireWith
            }), s.promise(n), e && e.call(n, n)
        }), t.when = t.when || function (e) {
            function f(e, t, n) {
                return function (r) {
                    t[e] = this, n[e] = arguments.length > 1 ? arguments : r, n === o ? s.notifyWith(t, n) : --i || s.resolveWith(t, n)
                }
            }

            var n = arguments, r = arguments.length, i = r !== 1 || e && t.type(e.promise) === "function" ? r : 0,
                s = i === 1 ? e : t.Deferred(), o, u, a;
            if (r > 1) {
                o = new Array(r), u = new Array(r), a = new Array(r);
                for (var l = 0; l < r; l++) n[l] && t.type(n[l].promise) === "function" ? n[l].promise().done(f(l, a, n)).fail(s.reject).progress(f(l, u, o)) : --i
            }
            return !i && s.resolveWith(a, n), s.promise()
        }, t.global = t.global || function () {
            var e = t._global_ = window[t.guid], n = e._ = e._ || {};
            return function (e, t, r) {
                return typeof t != "undefined" ? (r || (t = typeof n[e] == "undefined" ? t : n[e]), n[e] = t) : e && typeof n[e] == "undefined" && (n[e] = {}), n[e]
            }
        }(), t.browser = t.browser || function () {
            var e = navigator.userAgent, n = {
                isStrict: document.compatMode == "CSS1Compat",
                isGecko: /gecko/i.test(e) && !/like gecko/i.test(e),
                isWebkit: /webkit/i.test(e)
            };
            try {
                /(\d+\.\d+)/.test(external.max_version) && (n.maxthon = +RegExp.$1)
            } catch (r) {
            }
            switch (!0) {
                case/msie (\d+\.\d+)/i.test(e):
                    n.ie = document.documentMode || +RegExp.$1;
                    break;
                case/chrome\/(\d+\.\d+)/i.test(e):
                    n.chrome = +RegExp.$1;
                    break;
                case/(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(e) && !/chrome/i.test(e):
                    n.safari = +(RegExp.$1 || RegExp.$2);
                    break;
                case/firefox\/(\d+\.\d+)/i.test(e):
                    n.firefox = +RegExp.$1;
                    break;
                case/opera(?:\/| )(\d+(?:\.\d+)?)(.+?(version\/(\d+(?:\.\d+)?)))?/i.test(e):
                    n.opera = +(RegExp.$4 || RegExp.$1)
            }
            return t.extend(t, n), n
        }(), t.id = function () {
            var e = t.global("_maps_id"), n = t.key;
            return window[t.guid]._counter = window[t.guid]._counter || 1, function (r, i) {
                var s, o = t.isString(r), u = t.isObject(r), a = u ? r[n] : o ? r : "";
                if (t.isString(i)) switch (i) {
                    case"get":
                        return u ? a : e[a];
                    case"remove":
                    case"delete":
                        if (s = e[a]) t.isElement(s) && t.browser.ie < 8 ? s.removeAttribute(n) : delete s[n], delete e[a];
                        return a;
                    default:
                        return o ? ((s = e[a]) && delete e[a], s && (e[s[n] = i] = s)) : u && (a && delete e[a], e[r[n] = i] = r), i
                }
                return u ? (!a && (e[r[n] = a = t.id()] = r), a) : o ? e[r] : "TANGRAM_" + t._global_._counter++
            }
        }(), t._util_ = t._util_ || {}, t._util_.support = t._util_.support || function () {
            var e = document.createElement("div"), t, n, r, i, s;
            return e.setAttribute("className", "t"), e.innerHTML = ' <link/><table></table><a href="/a">a</a><input type="checkbox"/>', n = e.getElementsByTagName("A")[0], n.style.cssText = "top:1px;float:left;opacity:.5", i = document.createElement("select"), s = i.appendChild(document.createElement("option")), r = e.getElementsByTagName("input")[0], r.checked = !0, t = {
                dom: {
                    div: e,
                    a: n,
                    select: i,
                    opt: s,
                    input: r
                }
            }, t
        }(), t.createChain("event", function () {
            var e = {};
            return function (n, r) {
                switch (t.type(n)) {
                    case"object":
                        return e.originalEvent === n ? e : e = new t.event.$Event(n);
                    case"$Event":
                        return n
                }
            }
        }(), function (e) {
            var n, r, i, s = this;
            this._type_ = "$Event";
            if (typeof e == "object" && e.type) {
                s.originalEvent = n = e;
                for (var o in n) typeof n[o] != "function" && (s[o] = n[o]);
                n.extraData && t.extend(s, n.extraData), s.target = s.srcElement = n.srcElement || (r = n.target) && (r.nodeType == 3 ? r.parentNode : r), s.relatedTarget = n.relatedTarget || (r = n.fromElement) && (r === s.target ? n.toElement : r), s.keyCode = s.which = n.keyCode || n.which, !s.which && n.button !== undefined && (s.which = n.button & 1 ? 1 : n.button & 2 ? 3 : n.button & 4 ? 2 : 0);
                var u = document.documentElement, a = document.body;
                s.pageX = n.pageX || n.clientX + (u && u.scrollLeft || a && a.scrollLeft || 0) - (u && u.clientLeft || a && a.clientLeft || 0), s.pageY = n.pageY || n.clientY + (u && u.scrollTop || a && a.scrollTop || 0) - (u && u.clientTop || a && a.clientTop || 0), s.data
            }
            this.timeStamp = (new Date).getTime()
        }).extend({
            stopPropagation: function () {
                var e = this.originalEvent;
                e && (e.stopPropagation ? e.stopPropagation() : e.cancelBubble = !0)
            }, preventDefault: function () {
                var e = this.originalEvent;
                e && (e.preventDefault ? e.preventDefault() : e.returnValue = !1)
            }
        }), t.merge = function (e, t) {
            var n = e.length, r = 0;
            if (typeof t.length == "number") for (var i = t.length; r < i; r++) e[n++] = t[r]; else while (t[r] !== undefined) e[n++] = t[r++];
            return e.length = n, e
        }, t.array.extend({
            unique: function (e) {
                var t = this.length, n = this.slice(0), r, i;
                "function" != typeof e && (e = function (e, t) {
                    return e === t
                });
                while (--t > 0) {
                    i = n[t], r = t;
                    while (r--) if (e(i, n[r])) {
                        n.splice(t, 1);
                        break
                    }
                }
                t = this.length = n.length;
                for (r = 0; r < t; r++) this[r] = n[r];
                return this
            }
        }), t.query = t.query || function () {
            function f(n, o) {
                var u, a, f, l, c, h, p, d, v = [];
                return e.test(n) ? (f = RegExp.$2, c = RegExp.$1 || "*", t.forEach(o.getElementsByTagName(c), function (e) {
                    e.id == f && v.push(e)
                })) : r.test(n) || n == "*" ? t.merge(v, o.getElementsByTagName(n)) : i.test(n) ? (p = [], c = RegExp.$1, h = RegExp.$2, u = " " + h + " ", o.getElementsByClassName ? p = o.getElementsByClassName(h) : t.forEach(o.getElementsByTagName("*"), function (e) {
                    e.className && ~(" " + e.className + " ").indexOf(u) && p.push(e)
                }), c && (c = c.toUpperCase()) ? t.forEach(p, function (e) {
                    e.tagName.toUpperCase() === c && v.push(e)
                }) : t.merge(v, p)) : s.test(n) && (d = n.substr(1).split("."), t.forEach(o.getElementsByTagName("*"), function (e) {
                    e.className && (u = " " + e.className + " ", a = !0, t.forEach(d, function (e) {
                        ~u.indexOf(" " + e + " ") || (a = !1)
                    }), a && v.push(e))
                })), v
            }

            function l(e, r) {
                var i, s = e, o = "__tangram__", u = [];
                return !r && n.test(s) && (i = document.getElementById(s.substr(1))) ? [i] : (r = r || document, r.querySelectorAll ? (r.nodeType == 1 && !r.id ? (r.id = o, i = r.querySelectorAll("#" + o + " " + s), r.id = "") : i = r.querySelectorAll(s), i) : ~s.indexOf(" ") ? (t.forEach(f(s.substr(0, s.indexOf(" ")), r), function (e) {
                    t.merge(u, l(s.substr(s.indexOf(" ") + 1), e))
                }), u) : f(s, r))
            }

            var e = /^(\w*)#([\w\-\$]+)$/, n = /^#([\w\-\$]+)$/, r = /^\w+$/, i = /^(\w*)\.([\w\-\$]+)$/,
                s = /^(\.[\w\-\$]+)+$/, o = /\s*,\s*/, u = /\s+/g, a = Array.prototype.slice;
            return function (e, n, r) {
                if (!e || typeof e != "string") return r || [];
                var i = [];
                return e = e.replace(u, " "), r && t.merge(i, r) && (r.length = 0), t.forEach(e.indexOf(",") > 0 ? e.split(o) : [e], function (e) {
                    t.merge(i, l(e, n))
                }), t.merge(r || [], t.array(i).unique())
            }
        }(), t.createChain("dom", function (e, n) {
            var r, i = new t.dom.$DOM(n);
            if (!e) return i;
            if (e._type_ == "$DOM") return e;
            if (e.nodeType || e == e.window) return i[0] = e, i.length = 1, i;
            if (e.length && i.toString.call(e) != "[object String]") return t.merge(i, e);
            if (typeof e == "string") if (e.charAt(0) == "<" && e.charAt(e.length - 1) == ">" && e.length > 2) {
                var s = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, o = n && n._type_ === "$DOM" ? n[0] : n, u = s.exec(e);
                o = o && o.nodeType ? o.ownerDocument || o : document, u = u ? [o.createElement(u[1])] : t.dom.createElements ? t.dom.createElements(e) : [], t.merge(i, u)
            } else t.query(e, n, i); else if (typeof e == "function") return i.ready ? i.ready(e) : i;
            return i
        }, function (e) {
            this.length = 0, this._type_ = "$DOM", this.context = e || document
        }).extend({
            size: function () {
                return this.length
            }, splice: function () {
            }, get: function (e) {
                return typeof e == "number" ? e < 0 ? this[this.length + e] : this[e] : Array.prototype.slice.call(this, 0)
            }, toArray: function () {
                return this.get()
            }
        }), t.dom.extend({
            each: function (e) {
                t.check("function", "baidu.dom.each");
                var n, r, i = this.length;
                for (n = 0; n < i; n++) {
                    r = e.call(this[n], n, this[n], this);
                    if (r === !1 || r == "break") break
                }
                return this
            }
        }), t._util_.eventBase = t._util_.eventBase || {}, void function (e, t) {
            if (e.listener) return;
            t = e.listener = {}, window.addEventListener ? t.add = function (e, t, n) {
                e.addEventListener(t, n, !1)
            } : window.attachEvent && (t.add = function (e, t, n) {
                e.attachEvent("on" + t, n)
            })
        }(t._util_.eventBase), void function (e, n) {
            if (e.queue) return;
            var r = t.id, i = e.queue = {}, s = i.attaCache = t.global("eventQueueCache"), o = e.listener;
            i.get = function (e, t, n, i) {
                var o = r(e), u;
                return s[o] || (s[o] = {}), u = s[o], t ? (!u[t] && n && this.setupCall(e, t, n, u[t] = [], i), u[t] || []) : u
            }, i.add = function (e, t, n, r, i) {
                this.get(e, t, n, i).push(r)
            }, i.remove = function (e, t, n) {
                var r, i;
                if (t) {
                    var r = this.get(e, t);
                    if (n) for (var s = r.length - 1; s >= 0; s--) r[s].orig == n && r.splice(s, 1); else r.length = 0
                } else {
                    var i = this.get(e);
                    for (var s in i) i[s].length = 0
                }
            }, i.handlerList = function (e, n) {
                var r = [];
                for (var i = 0, s; s = n[i]; i++) {
                    if (s.delegate && t.dom(s.delegate, e).size() < 1) continue;
                    r.push(s)
                }
                return r
            }, i.call = function (e, n, r, s) {
                if (r) {
                    if (!r.length) return;
                    var o = [].slice.call(arguments, 1), u = [];
                    o.unshift(s = t.event(s || n)), s.type = n, s.currentTarget || (s.currentTarget = e), s.target || (s.target = e), r = i.handlerList(e, r);
                    for (var a = 0, f, l = r.length; a < l; a++) if (f = r[a]) f.pkg.apply(e, o), f.one && u.unshift(a);
                    if (u.length) for (var a = 0, l = u.length; a < l; a++) this.remove(e, n, r[a].fn)
                } else r = this.get(e, n), this.call(e, n, r, s)
            }, i.setupCall = function () {
                var e = function (e, t, n, r) {
                    o.add(e, n, function (n) {
                        i.call(e, t, r, n)
                    })
                };
                return function (n, r, i, s, o) {
                    if (!o) e(n, r, i, s); else {
                        n = t.dom(o, n);
                        for (var u = 0, a = n.length; u < a; u++) e(n[u], r, i, s)
                    }
                }
            }()
        }(t._util_.eventBase, t.event), void function (e, n) {
            if (e.core) return;
            var r = e.queue, i = e.core = {}, s = n.special = {}, o = [].push, u = function (e, t) {
                for (var n = 0, r = t.length; n < r; n++) if (t.get(n).contains(e)) return t[n]
            };
            i.build = function (e, n, r, i, a) {
                var f;
                return i && (f = t.dom(i, e)), n in s && s[n].pack && (r = s[n].pack(r)), function (n) {
                    var s = t.dom(n.target), l = [n], c;
                    a && !n.data && (n.data = a), n.triggerData && o.apply(l, n.triggerData);
                    if (!f) return n.result = r.apply(e, l);
                    for (var h = 0; h < 2; h++) {
                        if (c = u(n.target, f)) return n.result = r.apply(c, l);
                        f = t.dom(i, e)
                    }
                }
            }, i.add = function (e, t, n, i, o, u) {
                var a = this.build(e, t, n, i, o), f, l;
                l = t, t in s && (f = s[t].attachElements, l = s[t].bindType || t), r.add(e, t, l, {
                    type: t,
                    pkg: a,
                    orig: n,
                    one: u,
                    delegate: i
                }, f)
            }, i.remove = function (e, t, n, i) {
                r.remove(e, t, n, i)
            }
        }(t._util_.eventBase, t.event), t.dom.extend({
            on: function (e, n, r, i, s) {
                var o = t._util_.eventBase.core;
                return typeof n == "object" && n ? (i = r, r = n, n = null) : typeof r == "function" ? (i = r, r = null) : typeof n == "function" && (i = n, n = r = null), typeof e == "string" ? (e = e.split(/[ ,]+/), this.each(function () {
                    t.forEach(e, function (e) {
                        o.add(this, e, i, n, r, s)
                    }, this)
                })) : typeof e == "object" && (i && (i = null), t.forEach(e, function (e, t) {
                    this.on(t, n, r, e, s)
                }, this)), this
            }
        }), t.dom.g = function (e) {
            return e ? "string" == typeof e || e instanceof String ? document.getElementById(e) : !e.nodeName || e.nodeType != 1 && e.nodeType != 9 ? null : e : null
        }, t.event.on = t.on = function (e, n, r) {
            return typeof e == "string" && (e = t.dom.g(e)), t.dom(e).on(n.replace(/^\s*on/, ""), r), e
        }, void function () {
            function w(e) {
                var n, r;
                if (!e || t.type(e) !== "string") return null;
                try {
                    window.DOMParser ? (r = new DOMParser, n = r.parseFromString(e, "text/xml")) : (n = new ActiveXObject("Microsoft.XMLDOM"), n.async = "false", n.loadXML(e))
                } catch (i) {
                    n = undefined
                }
                if (!n || !n.documentElement || n.getElementsByTagName("parsererror").length) throw new Error("Invalid XML: " + e);
                return n
            }

            function E(e) {
                if (!e || t.type(e) !== "string") return null;
                e = t.string(e).trim();
                if (window.JSON && window.JSON.parse) return window.JSON.parse(e);
                if (l.test(e.replace(h, "@").replace(p, "]").replace(c, ""))) return (new Function("return " + e))();
                throw new Error("Invalid JSON: " + e)
            }

            function S(e) {
                e && /\S/.test(e) && (window.execScript || function (e) {
                    window.eval.call(window, e)
                })(e)
            }

            function x(e) {
                return function (n, r) {
                    t.type(n) !== "string" && (r = n, n = "*");
                    var i = n.toLowerCase().split(/\s+/), s, o;
                    if (t.type(r) === "function") for (var u = 0, a; a = i[u]; u++) s = /^\+/.test(a), s && (a = a.substr(1) || "*"), o = e[a] = e[a] || [], o[s ? "unshift" : "push"](r)
                }
            }

            function T(e, t, n) {
                var r, i, s, o, u = e.contents, a = e.dataTypes, f = e.responseFields;
                for (i in f) i in n && (t[f[i]] = n[i]);
                while (a[0] === "*") a.shift(), r === undefined && (r = e.mimeType || t.getResponseHeader("content-type"));
                if (r) for (i in u) if (u[i] && u[i].test(r)) {
                    a.unshift(i);
                    break
                }
                if (a[0] in n) s = a[0]; else {
                    for (i in n) {
                        if (!a[0] || e.converters[i + " " + a[0]]) {
                            s = i;
                            break
                        }
                        o || (o = i)
                    }
                    s = s || o
                }
                if (s) return s !== a[0] && a.unshift(s), n[s]
            }

            function N(e, t) {
                var n = e.dataTypes.slice(), r = n[0], i = {}, s, o;
                e.dataFilter && (t = e.dataFilter(t, e.dataType));
                if (n[1]) for (var u in e.converters) i[u.toLowerCase()] = e.converters[u];
                for (var u = 0, a; a = n[++u];) if (a !== "*") {
                    if (r !== "*" && r !== a) {
                        s = i[r + " " + a] || i["* " + a];
                        if (!s) for (var f in i) {
                            o = f.split(" ");
                            if (o[1] === a) {
                                s = i[r + " " + o[0]] || i["* " + o[0]];
                                if (s) {
                                    s === !0 ? s = i[f] : i[f] !== !0 && (a = o[0], n.splice(u--, 0, a));
                                    break
                                }
                            }
                        }
                        if (s !== !0) if (s && e["throws"]) t = s(t); else try {
                            t = s(t)
                        } catch (l) {
                            return {state: "parsererror", error: s ? l : "No conversion from " + r + " to " + a}
                        }
                    }
                    r = a
                }
                return {state: "success", data: t}
            }

            function C(e, t, n, r, i, s) {
                i = i || t.dataTypes[0], s = s || {}, s[i] = !0;
                var o, u = e[i], a = u ? u.length : 0, f = e === v;
                for (var l = 0; l < a && (f || !o); l++) o = u[l](t, n, r), typeof o == "string" && (!f || s[o] ? o = undefined : (t.dataTypes.unshift(o), o = C(e, t, n, r, o, s)));
                return (f || !o) && !s["*"] && (o = C(e, t, n, r, "*", s)), o
            }

            function k(e, n) {
                var r = t.ajax.settings.flatOptions || {}, i;
                for (var s in n) n[s] !== undefined && ((r[s] ? e : i || (i = {}))[s] = n[s]);
                i && t.extend(!0, e, i)
            }

            function L(e, n, r) {
                r = t.type(r) === "function" ? r() : typeof r == "undefined" || r == null ? "" : r, e.push(encodeURIComponent(n) + "=" + encodeURIComponent(r))
            }

            function A(e, n, r, i) {
                if (t.type(r) === "array") t.forEach(r, function (t, r) {
                    i || o.test(n) ? L(e, n, t) : A(e, n + "[" + (typeof t == "object" ? r : "") + "]", t, i)
                }); else if (!i && t.type(r) === "object") for (var s in r) A(e, n + "[" + s + "]", r[s], i); else L(e, n, r)
            }

            function B() {
                try {
                    return new window.XMLHttpRequest
                } catch (e) {
                }
            }

            function j() {
                try {
                    return new window.ActiveXObject("Microsoft.XMLHTTP")
                } catch (e) {
                }
            }

            var e = document.URL, n = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/, r = /^\/\//,
                i = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/, s = /#.*$/, o = /\[\]$/, u = /^(?:GET|HEAD)$/,
                a = /([?&])_=[^&]*/, f = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, l = /^[\],:{}\s]*$/,
                c = /(?:^|:|,)(?:\s*\[)+/g, h = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
                p = /"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g, d = ["*/"] + ["*"], v = {},
                m = {}, g = {}, y = {}, b = i.exec(e.toLowerCase()) || [];
            t.createChain("ajax", function (e, n) {
                function H(e, t, n, r) {
                    var i = t, s, u, a, f, c;
                    if (x === 2) return;
                    x = 2, P && clearTimeout(P), _ = undefined, O = r || "", D.readyState = e > 0 ? 4 : 0, n && (f = T(o, D, n));
                    if (e >= 200 && e < 300 || e === 304) o.ifModified && (c = D.getResponseHeader("Last-Modified"), c && (g[h] = c), c = D.getResponseHeader("Etag"), c && (y[h] = c)), e === 304 ? (i = "notmodified", s = !0) : (s = N(o, f), i = s.state, u = s.data, a = s.error, s = !a); else {
                        a = i;
                        if (!i || e) i = "error", e < 0 && (e = 0)
                    }
                    D.status = e, D.statusText = "" + (t || i), s ? w.resolveWith(l, [u, i, D]) : w.rejectWith(l, [D, i, a]), D.statusCode(S), S = undefined, E.fireWith(l, [D, i])
                }

                t.object.isPlain(e) && (n = e, e = undefined), n = n || {};
                var o = t.ajax.setup({}, n), l = o.context || o, c, h, p, w = t.Deferred(),
                    E = t.Callbacks("once memory"), S = o.statusCode || {}, x = 0, k = {}, L = {}, A = "canceled", O, M,
                    _, D = t.extend(new t.ajax.$Ajax(e, o), {
                        readyState: 0, setRequestHeader: function (e, t) {
                            if (!x) {
                                var n = e.toLowerCase();
                                e = k[n] = k[n] || e, L[e] = t
                            }
                        }, getAllResponseHeaders: function () {
                            return x === 2 ? O : null
                        }, getResponseHeader: function (e) {
                            var t;
                            if (x === 2) {
                                if (!M) {
                                    M = {};
                                    while (t = f.exec(O)) M[t[1].toLowerCase()] = t[2]
                                }
                                t = M[e.toLowerCase()]
                            }
                            return t === undefined ? null : t
                        }, overrideMimeType: function (e) {
                            return !x && (o.mimeType = e), this
                        }, abort: function (e) {
                            return e = e || A, _ && _.abort(e), H(0, e), this
                        }
                    }), P;
                w.promise(D), D.success = D.done, D.error = D.fail, D.complete = E.add, D.statusCode = function (e) {
                    if (e) if (x < 2) for (var t in e) S[t] = [S[t], e[t]]; else D.always(e[D.status]);
                    return this
                }, o.url = ((e || o.url) + "").replace(s, "").replace(r, b[1] + "//"), o.dataTypes = t.string(o.dataType || "*").trim().toLowerCase().split(/\s+/), o.crossDomain == null && (p = i.exec(o.url.toLowerCase()), o.crossDomain = !(!p || p[1] == b[1] && p[2] == b[2] && (p[3] || (p[1] === "http:" ? 80 : 443)) == (b[3] || (b[1] === "http:" ? 80 : 443)))), o.data && o.processData && t.type(o.data) !== "string" && (o.data = t.ajax.param(o.data, o.traditional)), C(v, o, n, D);
                if (x === 2) return "";
                c = o.global, o.type = o.type.toUpperCase(), o.hasContent = !u.test(o.type);
                if (!o.hasContent) {
                    o.data && (o.url += (~o.url.indexOf("?") ? "&" : "?") + o.data, delete o.data), h = o.url;
                    if (o.cache === !1) {
                        var B = (new Date).getTime(), j = o.url.replace(a, "$1_=" + B);
                        o.url = j + (j === o.url ? (~o.url.indexOf("?") ? "&" : "?") + "_=" + B : "")
                    }
                }
                (o.data && o.hasContent && o.contentType !== !1 || n.contentType) && D.setRequestHeader("Content-Type", o.contentType), o.ifModified && (h = h || o.url, g[h] && D.setRequestHeader("If-Modified-Since", g[h]), y[h] && D.setRequestHeader("If-None-Match", y[h])), D.setRequestHeader("Accept", o.dataTypes[0] && o.accepts[o.dataTypes[0]] ? o.accepts[o.dataTypes[0]] + (o.dataTypes[0] !== "*" ? ", " + d + "; q=0.01" : "") : o.accepts["*"]);
                for (var F in o.headers) D.setRequestHeader(F, o.headers[F]);
                if (!o.beforeSend || o.beforeSend.call(l, D, o) !== !1 && x !== 2) {
                    A = "abort";
                    for (var F in{success: 1, error: 1, complete: 1}) D[F](o[F]);
                    _ = C(m, o, n, D);
                    if (!_) H(-1, "No Transport"); else {
                        D.readyState = 1, o.async && o.timeout > 0 && (P = setTimeout(function () {
                            D.abort("timeout")
                        }, o.timeout));
                        try {
                            x = 1, _.send(L, H)
                        } catch (I) {
                            if (!(x < 2)) throw I;
                            H(-1, I)
                        }
                    }
                    return D
                }
                return D.abort()
            }, function (e, t) {
                this.url = e, this.options = t
            }), t.ajax.settings = {
                url: e,
                isLocal: n.test(b[1]),
                global: !0,
                type: "GET",
                contentType: "application/x-www-form-urlencoded; charset=UTF-8",
                processData: !0,
                async: !0,
                accepts: {
                    xml: "application/xml, text/xml",
                    html: "text/html",
                    text: "text/plain",
                    json: "application/json, text/javascript",
                    "*": d
                },
                contents: {xml: /xml/, html: /html/, json: /json/},
                responseFields: {xml: "responseXML", text: "responseText"},
                converters: {"* text": window.String, "text html": !0, "text json": E, "text xml": w},
                flatOptions: {context: !0, url: !0}
            }, t.ajax.setup = function (e, n) {
                return n ? k(e, t.ajax.settings) : (n = e, e = t.ajax.settings), k(e, n), e
            }, t.ajax.param = function (e, n) {
                var r = [];
                if (t.type(e) === "array") t.forEach(e, function (e) {
                    L(r, e.name, e.value)
                }); else for (var i in e) A(r, i, e[i], n);
                return r.join("&").replace(/%20/g, "+")
            }, t.ajax.prefilter = x(v), t.ajax.transport = x(m);
            var O = [], M = /(=)\?(?=&|$)|\?\?/, _ = (new Date).getTime();
            t.ajax.setup({
                jsonp: "callback", jsonpCallback: function () {
                    var e = O.pop() || t.key + "_" + _++;
                    return this[e] = !0, e
                }
            }), t.ajax.prefilter("json jsonp", function (e, n, r) {
                var i, s, o, u = e.data, a = e.url, f = e.jsonp !== !1, l = f && M.test(a),
                    c = f && !l && t.type(u) === "string" && !(e.contentType || "").indexOf("application/x-www-form-urlencoded") && M.test(u);
                if (e.dataTypes[0] === "jsonp" || l || c) return i = e.jsonpCallback = t.type(e.jsonpCallback) === "function" ? e.jsonpCallback() : e.jsonpCallback, s = window[i], l ? e.url = a.replace(M, "$1" + i) : c ? e.data = u.replace(M, "$1" + i) : f && (e.url += (/\?/.test(a) ? "&" : "?") + e.jsonp + "=" + i), e.converters["script json"] = function () {
                    return o[0]
                }, e.dataTypes[0] = "json", window[i] = function () {
                    o = arguments
                }, r.always(function () {
                    window[i] = s, e[i] && (e.jsonpCallback = n.jsonpCallback, O.push(i)), o && t.type(s) === "function" && s(o[0]), o = s = undefined
                }), "script"
            }), t.ajax.setup({
                accepts: {script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},
                contents: {script: /javascript|ecmascript/},
                converters: {
                    "text script": function (e) {
                        return S(e), e
                    }
                }
            }), t.ajax.prefilter("script", function (e) {
                e.cache === undefined && (e.cache = !1), e.crossDomain && (e.type = "GET", e.global = !1)
            }), t.ajax.transport("script", function (e) {
                if (e.crossDomain) {
                    var t, n = document.head || document.getElementsByTagName("head")[0] || document.documentElement;
                    return {
                        send: function (r, i) {
                            t = document.createElement("script"), t.async = "async", e.scriptCharset && (t.charset = e.scriptCharset), t.src = e.url, t.onload = t.onreadystatechange = function (e, r) {
                                if (r || !t.readyState || /loaded|complete/.test(t.readyState)) t.onload = t.onreadystatechange = null, n && t.parentNode && n.removeChild(t), t = undefined, !r && i(200, "success")
                            }, n.insertBefore(t, n.firstChild)
                        }, abort: function () {
                            t && t.onload(0, 1)
                        }
                    }
                }
            });
            var D, P = 0, H = window.ActiveXObject ? function () {
                for (var e in D) D[e](0, 1)
            } : !1;
            t.ajax.settings.xhr = window.ActiveXObject ? function () {
                return !this.isLocal && B() || j()
            } : B, void function (e) {
                t.extend(t._util_.support, {ajax: !!e, cors: !!e && "withCredentials" in e})
            }(t.ajax.settings.xhr()), t._util_.support.ajax && t.ajax.transport(function (e) {
                if (!e.crossDomain || t._util_.support.cors) {
                    var n;
                    return {
                        send: function (r, i) {
                            var s, o = e.xhr();
                            e.username ? o.open(e.type, e.url, e.async, e.username, e.password) : o.open(e.type, e.url, e.async);
                            if (e.xhrFields) for (var u in e.xhrFields) o[u] = e.xhrFields[u];
                            e.mimeType && o.overrideMimeType && o.overrideMimeType(e.mimeType), !e.crossDomain && !r["X-Requested-With"] && (r["X-Requested-With"] = "XMLHttpRequest");
                            try {
                                for (var u in r) o.setRequestHeader(u, r[u])
                            } catch (a) {
                            }
                            o.send(e.hasContent && e.data || null), n = function (t, r) {
                                var u, a, f, l, c;
                                try {
                                    if (n && (r || o.readyState === 4)) {
                                        n = undefined, s && (o.onreadystatechange = function () {
                                        }, H && delete D[s]);
                                        if (r) o.readyState !== 4 && o.abort(); else {
                                            u = o.status, f = o.getAllResponseHeaders(), l = {}, c = o.responseXML, c && c.documentElement && (l.xml = c);
                                            try {
                                                l.text = o.responseText
                                            } catch (h) {
                                            }
                                            try {
                                                a = o.statusText
                                            } catch (h) {
                                                a = ""
                                            }
                                            !u && e.isLocal && !e.crossDomain ? u = l.text ? 200 : 404 : u === 1223 && (u = 204)
                                        }
                                    }
                                } catch (p) {
                                    !r && i(-1, p)
                                }
                                l && i(u, a, l, f)
                            }, e.async ? o.readyState === 4 ? setTimeout(n, 0) : (s = ++P, H && (D || (D = {}, t.dom(window).on("unload", H)), D[s] = n), o.onreadystatechange = n) : n()
                        }, abort: function () {
                            n && n(0, 1)
                        }
                    }
                }
            })
        }(), t.array.extend({
            contains: function (e) {
                return !!~this.indexOf(e)
            }
        }), t.each = function (e, t, n) {
            var r, i, s, o;
            if (typeof t == "function" && e) {
                i = typeof e.length == "number" ? e.length : e.byteLength;
                if (typeof i == "number") {
                    if (Object.prototype.toString.call(e) === "[object Function]") return e;
                    for (r = 0; r < i; r++) {
                        s = e[r], s === undefined && (s = e.charAt && e.charAt(r)), o = t.call(n || s, r, s, e);
                        if (o === !1 || o == "break") break
                    }
                } else if (typeof e == "number") for (r = 0; r < e; r++) {
                    o = t.call(n || r, r, r, r);
                    if (o === !1 || o == "break") break
                } else if (typeof e == "object") for (r in e) if (e.hasOwnProperty(r)) {
                    o = t.call(n || e[r], r, e[r], e);
                    if (o === !1 || o == "break") break
                }
            }
            return e
        }, t.array.extend({
            each: function (e, n) {
                return t.each(this, e, n)
            }, forEach: function (e, n) {
                return t.forEach(this, e, n)
            }
        }), t.array.extend({
            empty: function () {
                return this.length = 0, this
            }
        }), t.array.extend({
            filter: function (e, n) {
                var r = t.array([]), i, s, o, u = 0;
                if (t.type(e) === "function") for (i = 0, s = this.length; i < s; i++) o = this[i], e.call(n || this, o, i, this) === !0 && (r[u++] = o);
                return r
            }
        }), t.array.extend({
            find: function (e) {
                var n, r, i = this.length;
                if (t.type(e) == "function") for (n = 0; n < i; n++) {
                    r = this[n];
                    if (e.call(this, r, n, this) === !0) return r
                }
                return null
            }
        }), t.array.extend({
            hash: function (e) {
                var t = {}, n = e && e.length, r, i;
                for (r = 0, i = this.length; r < i; r++) t[this[r]] = n && n > r ? e[r] : !0;
                return t
            }
        }), t.array.extend({
            lastIndexOf: function (e, n) {
                t.check(".+(,number)?", "baidu.array.lastIndexOf");
                var r = this.length;
                (!(n |= 0) || n >= r) && (n = r - 1), n < 0 && (n += r);
                for (; n >= 0; n--) if (n in this && this[n] === e) return n;
                return -1
            }
        }), t.array.extend({
            map: function (e, n) {
                t.check("function(,.+)?", "baidu.array.map");
                var r = this.length, i = t.array([]);
                for (var s = 0; s < r; s++) i[s] = e.call(n || this, this[s], s, this);
                return i
            }
        }), t.array.extend({
            remove: function (e) {
                var t = this.length;
                while (t--) this[t] === e && this.splice(t, 1);
                return this
            }
        }), t.array.extend({
            removeAt: function (e) {
                return t.check("number", "baidu.array.removeAt"), this.splice(e, 1)[0]
            }
        }), t.base = t.base || {
            blank: function () {
            }
        }, t.base.Class = function () {
            var e = (t._global_ = window[t.guid])._instances;
            return e || (e = t._global_._instances = {}), function () {
                this.guid = t.id(), this._decontrol_ || (e[this.guid] = this)
            }
        }(), t.extend(t.base.Class.prototype, {
            toString: t.base.Class.prototype.toString = function () {
                return "[object " + (this._type_ || "Object") + "]"
            }, dispose: function () {
                delete t._global_._instances[this.guid];
                if (this._listeners_) for (var e in this._listeners_) this._listeners_[e].length = 0, delete this._listeners_[e];
                for (var n in this) t.isFunction(this[n]) ? this[n] = t.base.blank : delete this[n];
                this.disposed = !0
            }, fire: function (e, n) {
                t.isString(e) && (e = new t.base.Event(e));
                var r, i, s, o, u = this._listeners_, a = e.type,
                    f = [e].concat(Array.prototype.slice.call(arguments, 1));
                !u && (u = this._listeners_ = {}), t.extend(e, n || {}), e.target = e.target || this, e.currentTarget = this, a.indexOf("on") && (a = "on" + a), t.isFunction(this[a]) && this[a].apply(this, f), (r = this._options) && t.isFunction(r[a]) && r[a].apply(this, f);
                if (t.isArray(s = u[a])) for (r = s.length - 1; r > -1; r--) o = s[r], o && o.handler.apply(this, f), o && o.once && s.splice(r, 1);
                return e.returnValue
            }, on: function (e, n, r) {
                if (!t.isFunction(n)) return this;
                var i, s = this._listeners_;
                return !s && (s = this._listeners_ = {}), e.indexOf("on") && (e = "on" + e), !t.isArray(i = s[e]) && (i = s[e] = []), s[e].unshift({
                    handler: n,
                    once: !!r
                }), this
            }, once: function (e, t) {
                return this.on(e, t, !0)
            }, one: function (e, t) {
                return this.on(e, t, !0)
            }, off: function (e, t) {
                var n, r, i = this._listeners_;
                if (!i) return this;
                if (typeof e == "undefined") {
                    for (n in i) delete i[n];
                    return this
                }
                e.indexOf("on") && (e = "on" + e);
                if (typeof t == "undefined") delete i[e]; else if (r = i[e]) for (n = r.length - 1; n >= 0; n--) r[n].handler === t && r.splice(n, 1);
                return this
            }
        }), t.base.Class.prototype.addEventListener = t.base.Class.prototype.on, t.base.Class.prototype.removeEventListener = t.base.Class.prototype.un = t.base.Class.prototype.off, t.base.Class.prototype.dispatchEvent = t.base.Class.prototype.fire, window.baiduInstance = function (e) {
            return window[t.guid]._instances[e]
        }, t.base.Event = function (e, t) {
            this.type = e, this.returnValue = !0, this.target = t || null, this.currentTarget = null, this.preventDefault = function () {
                this.returnValue = !1
            }
        }, t.base.inherits = function (e, t, n) {
            var r, i, s = e.prototype, o = new Function;
            o.prototype = t.prototype, i = e.prototype = new o;
            for (r in s) i[r] = s[r];
            return e.prototype.constructor = e, e.superClass = t.prototype, typeof n == "string" && (i._type_ = n), e.extend = function (t) {
                for (var n in t) i[n] = t[n];
                return e
            }, e
        }, t.base.register = function (e, t, n) {
            (e._reg_ || (e._reg_ = [])).push(t);
            for (var r in n) e.prototype[r] = n[r]
        }, t.cookie = t.cookie || {}, t.cookie._isValidKey = function (e) {
            return (new RegExp('^[^\\x00-\\x20\\x7f\\(\\)<>@,;:\\\\\\"\\[\\]\\?=\\{\\}\\/\\u0080-\\uffff]+$')).test(e)
        }, t.cookie.getRaw = function (e) {
            if (t.cookie._isValidKey(e)) {
                var n = new RegExp("(^| )" + e + "=([^;]*)(;|$)"), r = n.exec(document.cookie);
                if (r) return r[2] || null
            }
            return null
        }, t.cookie.get = function (e) {
            var n = t.cookie.getRaw(e);
            return "string" == typeof n ? (n = decodeURIComponent(n), n) : null
        }, t.cookie.setRaw = function (e, n, r) {
            if (!t.cookie._isValidKey(e)) return;
            r = r || {};
            var i = r.expires;
            "number" == typeof r.expires && (i = new Date, i.setTime(i.getTime() + r.expires)), document.cookie = e + "=" + n + (r.path ? "; path=" + r.path : "") + (i ? "; expires=" + i.toGMTString() : "") + (r.domain ? "; domain=" + r.domain : "") + (r.secure ? "; secure" : "")
        }, t.cookie.remove = function (e, n) {
            n = n || {}, n.expires = new Date(0), t.cookie.setRaw(e, "", n)
        }, t.cookie.set = function (e, n, r) {
            t.cookie.setRaw(e, encodeURIComponent(n), r)
        }, t.createClass = function (e, n, r) {
            e = t.isFunction(e) ? e : function () {
            }, r = typeof n == "object" ? n : r || {};
            var i = function () {
                var t = this;
                r.decontrolled && (t._decontrol_ = !0), i.superClass.apply(t, arguments);
                for (var n in i.options) t[n] = i.options[n];
                e.apply(t, arguments);
                for (var n = 0, s = i._reg_; s && n < s.length; n++) s[n].apply(t, arguments)
            };
            return t.extend(i, {
                superClass: r.superClass || t.base.Class, inherits: function (n) {
                    if (typeof n != "function") return i;
                    var r = function () {
                    };
                    r.prototype = (i.superClass = n).prototype;
                    var s = i.prototype = new r;
                    return t.extend(i.prototype, e.prototype), s.constructor = e, i
                }, register: function (e, n) {
                    return (i._reg_ || (i._reg_ = [])).push(e), n && t.extend(i.prototype, n), i
                }, extend: function (e) {
                    return t.extend(i.prototype, e), i
                }
            }), n = t.isString(n) ? n : r.className || r.type, t.isString(n) && (e.prototype._type_ = n), t.isFunction(i.superClass) && i.inherits(i.superClass), i
        }, t.createSingle = function (e, n) {
            var r = new t.base.Class;
            return t.isString(n) && (r._type_ = n), t.extend(r, e)
        }, t.date = t.date || {}, t.createChain("number", function (e) {
            var n = parseFloat(e), r = isNaN(n) ? n : e, i = typeof r == "number" ? Number : String, s = i.prototype;
            return r = new i(r), t.forEach(t.number.$Number.prototype, function (e, t) {
                s[t] || (r[t] = e)
            }), r
        }), t.number.extend({
            pad: function (e) {
                var t = this, n = "", r = t < 0, i = String(Math.abs(t));
                return i.length < e && (n = (new Array(e - i.length + 1)).join("0")), (r ? "-" : "") + n + i
            }
        }), t.date.format = function (e, n) {
            function r(e, t) {
                n = n.replace(e, t)
            }

            if ("string" != typeof n) return e.toString();
            var i = t.number.pad, s = e.getFullYear(), o = e.getMonth() + 1, u = e.getDate(), a = e.getHours(),
                f = e.getMinutes(), l = e.getSeconds();
            return r(/yyyy/g, i(s, 4)), r(/yy/g, i(parseInt(s.toString().slice(2), 10), 2)), r(/MM/g, i(o, 2)), r(/M/g, o), r(/dd/g, i(u, 2)), r(/d/g, u)
                , r(/HH/g, i(a, 2)), r(/H/g, a), r(/hh/g, i(a % 12, 2)), r(/h/g, a % 12), r(/mm/g, i(f, 2)), r(/m/g, f), r(/ss/g, i(l, 2)), r(/s/g, l), n
        }, t.date.parse = function (e) {
            var t = new RegExp("^\\d+(\\-|\\/)\\d+(\\-|\\/)\\d+$");
            if ("string" == typeof e) {
                if (t.test(e) || isNaN(Date.parse(e))) {
                    var n = e.split(/ |T/), r = n.length > 1 ? n[1].split(/[^\d]/) : [0, 0, 0], i = n[0].split(/[^\d]/);
                    return new Date(i[0] - 0, i[1] - 1, i[2] - 0, r[0] - 0, r[1] - 0, r[2] - 0)
                }
                return new Date(e)
            }
            return new Date
        }, t.dom.extend({
            pushStack: function (e) {
                var n = t.dom();
                return t.merge(n, e), n.prevObject = this, n.context = this.context, n
            }
        }), t.dom.createElements = function () {
            function i(e, t) {
                var n = e.getElementsByTagName("SCRIPT"), r, i, s;
                for (r = n.length - 1; r >= 0; r--) s = n[r], i = t.createElement("SCRIPT"), s.id && (i.id = s.id), s.src && (i.src = s.src), s.type && (i.type = s.type), i[s.text ? "text" : "textContent"] = s.text || s.textContent, s.parentNode.replaceChild(i, s)
            }

            var e = /<(\w+)/i, n = /<|&#?\w+;/, r = {
                area: [1, "<map>", "</map>"],
                col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
                legend: [1, "<fieldset>", "</fieldset>"],
                option: [1, "<select multiple='multiple'>", "</select>"],
                td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
                thead: [1, "<table>", "</table>"],
                tr: [2, "<table><tbody>", "</tbody></table>"],
                _default: [0, "", ""]
            };
            return r.optgroup = r.option, r.tbody = r.tfoot = r.colgroup = r.caption = r.thead, r.th = r.td, function (s, o) {
                t.isNumber(s) && (s = s.toString()), o = o || document;
                var u, a, f, l = s, c = l.length, h = o.createElement("div"), p = o.createDocumentFragment(), d = [];
                if (t.isString(l)) if (!n.test(l)) d.push(o.createTextNode(l)); else {
                    u = r[l.match(e)[1].toLowerCase()] || r._default, h.innerHTML = "<i>mz</i>" + u[1] + l + u[2], h.removeChild(h.firstChild), i(h, o), a = u[0], f = h;
                    while (a--) f = f.firstChild;
                    t.merge(d, f.childNodes), t.forEach(d, function (e) {
                        p.appendChild(e)
                    }), h = f = null
                }
                return h = null, d
            }
        }(), t.dom.extend({
            add: function (e, n) {
                var r = t.array(this.get());
                switch (t.type(e)) {
                    case"HTMLElement":
                        r.push(e);
                        break;
                    case"$DOM":
                    case"array":
                        t.merge(r, e);
                        break;
                    case"string":
                        t.merge(r, t.dom(e, n));
                        break;
                    default:
                        typeof e == "object" && e.length && t.merge(r, e)
                }
                return this.pushStack(r.unique())
            }
        }), t.dom.extend({
            addClass: function (e) {
                if (!arguments.length) return this;
                var n = typeof e, r = " ";
                if (n == "string") {
                    e = t.string.trim(e);
                    var i = e.split(" ");
                    t.forEach(this, function (e, t) {
                        var n = e.className;
                        for (var s = 0; s < i.length; s++) ~(r + n + r).indexOf(r + i[s] + r) || (n += " " + i[s]);
                        e.className = n.replace(/^\s+/g, "")
                    })
                } else n == "function" && t.forEach(this, function (n, r) {
                    t.dom(n).addClass(e.call(n, r, n.className))
                });
                return this
            }
        }), t.dom.extend({
            getDocument: function () {
                if (this.size() <= 0) return undefined;
                var e = this[0];
                return e.nodeType == 9 ? e : e.ownerDocument || e.document
            }
        }), t._util_.cleanData = function (e) {
            var n;
            for (var r = 0, i; i = e[r]; r++) {
                n = t.id(i, "get");
                if (!n) continue;
                t._util_.eventBase.queue.remove(i), t.id(i, "remove")
            }
        }, t.dom.extend({
            empty: function () {
                for (var e = 0, n; n = this[e]; e++) {
                    n.nodeType === 1 && t._util_.cleanData(n.getElementsByTagName("*"));
                    while (n.firstChild) n.removeChild(n.firstChild)
                }
                return this
            }
        }), t.dom.extend({
            append: function () {
                return t.check("^(?:string|function|HTMLElement|\\$DOM)(?:,(?:string|array|HTMLElement|\\$DOM))*$", "baidu.dom.append"), t._util_.smartInsert(this, arguments, function (e) {
                    this.nodeType === 1 && this.appendChild(e)
                }), this
            }
        }), t.dom.extend({
            html: function (e) {
                var n = t.dom, r = t._util_, i = this, s = !1,
                    o = !!r.support.dom.div.getElementsByTagName("link").length,
                    u = r.support.dom.div.firstChild.nodeType === 3, a;
                if (!this.size()) switch (typeof e) {
                    case"undefined":
                        return undefined;
                    default:
                        return i
                }
                var f = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
                    l = /<(?:script|style|link)/i, c = new RegExp("<(?:" + f + ")[\\s/>]", "i"), h = /^\s+/,
                    p = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, d = /<([\w:]+)/,
                    v = {
                        option: [1, "<select multiple='multiple'>", "</select>"],
                        legend: [1, "<fieldset>", "</fieldset>"],
                        thead: [1, "<table>", "</table>"],
                        tr: [2, "<table><tbody>", "</tbody></table>"],
                        td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
                        col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
                        area: [1, "<map>", "</map>"],
                        _default: [0, "", ""]
                    };
                return v.optgroup = v.option, v.tbody = v.tfoot = v.colgroup = v.caption = v.thead, v.th = v.td, o || (v._default = [1, "X<div>", "</div>"]), t.forEach(i, function (t, r) {
                    if (a) return;
                    var f = n(t);
                    switch (typeof e) {
                        case"undefined":
                            a = t.nodeType === 1 ? t.innerHTML : undefined;
                            return;
                        case"number":
                            e = String(e);
                        case"string":
                            s = !0;
                            if (!l.test(e) && (o || !c.test(e)) && (u || !h.test(e)) && !v[(d.exec(e) || ["", ""])[1].toLowerCase()]) {
                                e = e.replace(p, "<$1></$2>");
                                try {
                                    t.nodeType === 1 && (f.empty(), t.innerHTML = e), t = 0
                                } catch (m) {
                                }
                            }
                            t && i.empty().append(e);
                            break;
                        case"function":
                            s = !0, f.html(e.call(t, r, f.html()))
                    }
                }), s ? i : a
            }
        }), t._util_.smartInsert = function (e, n, r) {
            if (n.length <= 0 || e.size() <= 0) return;
            if (t.type(n[0]) === "function") {
                var i = n[0], s;
                return t.forEach(e, function (e, o) {
                    s = t.dom(e), n[0] = i.call(e, o, s.html()), t._util_.smartInsert(s, n, r)
                })
            }
            var o = e.getDocument() || document, u = o.createDocumentFragment(), a = e.length - 1, f;
            for (var l = 0, c; c = n[l]; l++) c.nodeType ? u.appendChild(c) : t.forEach(~"string|number".indexOf(t.type(c)) ? t.dom.createElements(c, o) : c, function (e) {
                u.appendChild(e)
            });
            if (!(f = u.firstChild)) return;
            t.forEach(e, function (e, t) {
                r.call(e.nodeName.toLowerCase() === "table" && f.nodeName.toLowerCase() === "tr" ? e.tBodies[0] || e.appendChild(e.ownerDocument.createElement("tbody")) : e, t < a ? u.cloneNode(!0) : u)
            })
        }, t.dom.extend({
            after: function () {
                return t.check("^(?:string|function|HTMLElement|\\$DOM)(?:,(?:string|array|HTMLElement|\\$DOM))*$", "baidu.dom.after"), t._util_.smartInsert(this, arguments, function (e) {
                    this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
                }), this
            }
        }), t.makeArray = function (e, n) {
            var r = n || [];
            return e ? (e.length == null || ~"string|function|regexp".indexOf(t.type(e)) ? [].push.call(r, e) : t.merge(r, e), r) : r
        }, t.dom.extend({
            map: function (e) {
                t.check("function", "baidu.dom.map");
                var n = [], r = 0;
                return t.forEach(this, function (t, s) {
                    n[r++] = e.call(t, s, t, t)
                }), this.pushStack(n)
            }
        }), t._util_.isXML = function (e) {
            var t = (e ? e.ownerDocument || e : 0).documentElement;
            return t ? t.nodeName !== "HTML" : !1
        }, t.dom.extend({
            clone: function () {
                function u(e) {
                    return e.getElementsByTagName ? e.getElementsByTagName("*") : e.querySelectorAll ? e.querySelectorAll("*") : []
                }

                function a(e, n) {
                    n.clearAttributes && n.clearAttributes(), n.mergeAttributes && n.mergeAttributes(e);
                    switch (n.nodeName.toLowerCase()) {
                        case"object":
                            n.outerHTML = e.outerHTML;
                            break;
                        case"textarea":
                        case"input":
                            ~"checked|radio".indexOf(e.type) && (e.checked && (n.defaultChecked = n.checked = e.checked), n.value !== e.value && (n.value = e.value)), n.defaultValue = e.defaultValue;
                            break;
                        case"option":
                            n.selected = e.defaultSelected;
                            break;
                        case"script":
                            n.text !== e.text && (n.text = e.text)
                    }
                    n[t.key] && n.removeAttribute(t.key)
                }

                function f(e, i) {
                    if (i.nodeType !== 1 || !t.id(e, "get")) return;
                    var s = r.get(e);
                    for (var o in s) for (var u = 0, a; a = s[o][u]; u++) n.add(i, o, a.orig, null, null, a.one)
                }

                function l(e, n, r) {
                    var i = e.cloneNode(!0), l, c, h;
                    if ((!o || !s) && (e.nodeType === 1 || e.nodeType === 11) && !t._util_.isXML(e)) {
                        a(e, i), l = u(e), c = u(i), h = l.length;
                        for (var p = 0; p < h; p++) c[p] && a(l[p], c[p])
                    }
                    if (n) {
                        f(e, i);
                        if (r) {
                            l = u(e), c = u(i), h = l.length;
                            for (var p = 0; p < h; p++) f(l[p], c[p])
                        }
                    }
                    return i
                }

                var e = t._util_, n = e.eventBase.core, r = e.eventBase.queue, i = e.support.dom.div,
                    s = e.support.dom.input.cloneNode(!0).checked, o = !0;
                return !i.addEventListener && i.attachEvent && i.fireEvent && (i.attachEvent("onclick", function () {
                    o = !1
                }), i.cloneNode(!0).fireEvent("onclick")), function (e, t) {
                    return e = !!e, t = !!t, this.map(function () {
                        return l(this, e, t)
                    })
                }
            }()
        }), t._util_.contains = document.compareDocumentPosition ? function (e, t) {
            return !!(e.compareDocumentPosition(t) & 16)
        } : function (e, t) {
            if (e === t) return !1;
            if (e.contains && t.contains) return e.contains(t);
            while (t = t.parentNode) if (t === e) return !0;
            return !1
        }, t.dom.extend({
            contains: function (e) {
                var n = this[0];
                return e = t.dom(e)[0], !n || !e ? !1 : t._util_.contains(n, e)
            }
        }), t._util_.smartInsertTo = function (e, n, r, i) {
            var s = t.dom(n), o = s[0], u;
            if (i && o && (!o.parentNode || o.parentNode.nodeType === 11)) i = i === "before", u = t.merge(i ? e : s, i ? s : e), e !== u && (e.length = 0, t.merge(e, u)); else for (var a = 0, f; f = s[a]; a++) t._util_.smartInsert(t.dom(f), a > 0 ? e.clone(!0, !0) : e, r)
        }, t.dom.extend({
            appendTo: function (e) {
                var n = [], r = n.push;
                return t.check("^(?:string|HTMLElement|\\$DOM)$", "baidu.dom.appendTo"), t._util_.smartInsertTo(this, e, function (e) {
                    r.apply(n, t.makeArray(e.childNodes)), this.appendChild(e)
                }), this.pushStack(n)
            }
        }), t._util_.access = function (e, n, r, i, s) {
            if (e.size() <= 0) return e;
            switch (t.type(n)) {
                case"string":
                    if (r === undefined) return i.call(e, e[0], n);
                    e.each(function (o, u) {
                        i.call(e, u, n, t.type(r) === "function" ? r.call(u, o, i.call(e, u, n)) : r, s)
                    });
                    break;
                case"object":
                    for (var o in n) t._util_.access(e, o, n[o], i, r)
            }
            return e
        }, t._util_.nodeName = function (e, t) {
            return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
        }, t._util_.propFixer = {
            tabindex: "tabIndex",
            readonly: "readOnly",
            "for": "htmlFor",
            "class": "className",
            classname: "className",
            maxlength: "maxLength",
            cellspacing: "cellSpacing",
            cellpadding: "cellPadding",
            rowspan: "rowSpan",
            colspan: "colSpan",
            usemap: "useMap",
            frameborder: "frameBorder",
            contenteditable: "contentEditable",
            rboolean: /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i
        }, !document.createElement("form").enctype && (t._util_.propFixer.enctype = "encoding"),t._util_.prop = function () {
            var e = /^(?:button|input|object|select|textarea)$/i, n = /^a(?:rea|)$/i,
                r = document.createElement("select"), i = r.appendChild(document.createElement("option")), s = {
                    tabIndex: {
                        get: function (t) {
                            var r = t.getAttributeNode("tabindex");
                            return r && r.specified ? parseInt(r.value, 10) : e.test(t.nodeName) || n.test(t.nodeName) && t.href ? 0 : undefined
                        }
                    }
                };
            return !i.selected && (s.selected = {
                get: function (e) {
                    var t = e.parentNode;
                    return t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex), null
                }
            }), r = i = null, function (e, n, r) {
                var i = e.nodeType, o, u;
                if (!e || ~"238".indexOf(i)) return;
                if (i !== 1 || !t._util_.isXML(e)) n = t._util_.propFixer[n] || n, o = s[n] || {};
                return r !== undefined ? o.set && (u = o.set(e, n, r)) !== undefined ? u : e[n] = r : o.get && (u = o.get(e, n)) !== null ? u : e[n]
            }
        }(),t._util_.support.getSetAttribute = t._util_.support.dom.div.className !== "t",t._util_.nodeHook = function () {
            if (t._util_.support.getSetAttribute) return;
            var e = {};
            return e.name = e.id = e.coords = !0, {
                get: function (t, n) {
                    var r = t.getAttributeNode(n);
                    return r && (e[n] ? r.value !== "" : r.specified) ? r.value : undefined
                }, set: function (e, t, n) {
                    var r = e.getAttributeNode(t);
                    return r || (r = document.createAttribute(t), e.setAttributeNode(r)), r.value = n + ""
                }
            }
        }(),t._util_.removeAttr = function () {
            var e = t._util_.propFixer, n = /\s+/, r = t._util_.support.getSetAttribute;
            return function (i, s) {
                if (!s || i.nodeType !== 1) return;
                var o = s.split(n), u, a;
                for (var f = 0, l; l = o[f]; f++) u = e[l] || l, a = e.rboolean.test(l), !a && t._util_.attr(i, l, ""), i.removeAttribute(r ? l : u), a && u in i && (i[u] = !1)
            }
        }(),t._util_.attr = function () {
            var e = t._util_, n = /^(?:button|input)$/i, r = e.support.dom, i = r.input.value === "t",
                s = r.a.getAttribute("href") === "/a", o = /top/.test(r.a.getAttribute("style")), u = e.nodeHook,
                a = {className: "class"}, f = {
                    get: function (t, n) {
                        var r = e.prop(t, n), i;
                        return r === !0 || typeof r != "boolean" && (i = t.getAttributeNode(n)) && i.nodeValue !== !1 ? n.toLowerCase() : undefined
                    }, set: function (t, n, r) {
                        if (r === !1) e.removeAttr(t, n); else {
                            var i = e.propFixer[n] || n;
                            i in t && (t[i] = !0), t.setAttribute(n, n.toLowerCase())
                        }
                        return n
                    }
                }, l = {
                    type: {
                        set: function (t, r, s) {
                            if (n.test(t.nodeName) && t.parentNode) return s;
                            if (!i && s === "radio" && e.nodeName(t, "input")) {
                                var o = t.value;
                                return t.setAttribute("type", s), o && (t.value = o), s
                            }
                        }
                    }, value: {
                        get: function (t, n) {
                            return u && e.nodeName(t, "button") ? u.get(t, n) : n in t ? t.value : null
                        }, set: function (t, n, r) {
                            if (u && e.nodeName(t, "button")) return u.set(t, n, r);
                            t.value = r
                        }
                    }
                };
            return e.support.getSetAttribute || (t.forEach(["width", "height"], function (e) {
                l[e] = {
                    set: function (e, t, n) {
                        if (n === "") return e.setAttribute(t, "auto"), n
                    }
                }
            }), l.contenteditable = {
                get: u.get, set: function (e, t, n) {
                    n === "" && (n = !1), u.set(e, t, n)
                }
            }), s || t.forEach(["href", "src", "width", "height"], function (e) {
                l[e] = {
                    get: function (e, t) {
                        var n = e.getAttribute(t, 2);
                        return n === null ? undefined : n
                    }
                }
            }), o || (l.style = {
                get: function (e) {
                    return e.style.cssText.toLowerCase() || undefined
                }, set: function (e, t, n) {
                    return e.style.cssText = n + ""
                }
            }), function (n, r, i, s) {
                var o = n.nodeType, c = o !== 1 || !e.isXML(n), h, p;
                if (!n || ~"238".indexOf(o)) return;
                if (s && t.dom.fn[r]) return t.dom(n)[r](i);
                c && (r = a[r] || r.toLowerCase(), h = l[r] || (e.propFixer.rboolean.test(r) ? f : u));
                if (i !== undefined) {
                    if (i === null) {
                        e.removeAttr(n, r);
                        return
                    }
                    return c && h && h.set && (p = h.set(n, r, i)) !== undefined ? p : (n.setAttribute(r, i + ""), i)
                }
                return c && h && h.get && (p = h.get(n, r)) !== null ? p : (p = n.getAttribute(r), p === null ? undefined : p)
            }
        }(),t.dom.extend({
            attr: function (e, n) {
                return t._util_.access(this, e, n, function (e, n, r, i) {
                    return t._util_.attr(e, n, r, i)
                })
            }
        }),t.dom.extend({
            before: function () {
                return t.check("^(?:string|function|HTMLElement|\\$DOM)(?:,(?:string|array|HTMLElement|\\$DOM))*$", "baidu.dom.before"), t._util_.smartInsert(this, arguments, function (e) {
                    this.parentNode && this.parentNode.insertBefore(e, this)
                }), this
            }
        }),t.dom.extend({
            bind: function (e, t, n) {
                return this.on(e, undefined, t, n)
            }
        }),t.dom.match = function () {
            function r(e) {
                var t = [], n;
                while (e = e.parentNode) e.nodeType && t.push(e);
                for (var n = t.length - 1; n > -1; n--) if (t[n].nodeType == 1 || t[n].nodeType == 9) return t[n];
                return null
            }

            var e = /^[\w\#\-\$\.\*]+$/, n = document.createElement("DIV");
            return n.id = "__tangram__", function (e, n, i) {
                var s, o = t.array();
                switch (t.type(n)) {
                    case"$DOM":
                        for (var u = e.length - 1; u > -1; u--) for (var a = n.length - 1; a > -1; a--) e[u] === n[a] && o.push(e[u]);
                        break;
                    case"function":
                        t.forEach(e, function (e, t) {
                            n.call(e, t) && o.push(e)
                        });
                        break;
                    case"HTMLElement":
                        t.forEach(e, function (e) {
                            e == n && o.push(e)
                        });
                        break;
                    case"string":
                        var f = t.query(n, i || document);
                        t.forEach(e, function (e) {
                            if (s = r(e)) {
                                var i = s.nodeType == 1 ? t.query(n, s) : f;
                                for (var u = 0, a = i.length; u < a; u++) if (i[u] === e) {
                                    o.push(e);
                                    break
                                }
                            }
                        }), o = o.unique();
                        break;
                    default:
                        o = t.array(e).unique()
                }
                return o
            }
        }(),t.dom.extend({
            children: function (e) {
                var n = [];
                return this.each(function () {
                    t.forEach(this.children || this.childNodes, function (e) {
                        e.nodeType == 1 && n.push(e)
                    })
                }), this.pushStack(t.dom.match(n, e))
            }
        }),t.dom.extend({
            closest: function (e, n) {
                var r = t.array();
                return t.forEach(this, function (i) {
                    var s = [i];
                    while (i = i.parentNode) i.nodeType && s.push(i);
                    s = t.dom.match(s, e, n), s.length && r.push(s[0])
                }), this.pushStack(r.unique())
            }
        }),t.dom.extend({
            contents: function () {
                var e = [], n;
                for (var r = 0, i; i = this[r]; r++) n = i.nodeName, e.push.apply(e, t.makeArray(n && n.toLowerCase() === "iframe" ? i.contentDocument || i.contentWindow.document : i.childNodes));
                return this.pushStack(e)
            }
        }),t.dom.extend({
            getComputedStyle: function (e) {
                if (!this[0].ownerDocument) return;
                var t = this[0].ownerDocument.defaultView,
                    n = t && t.getComputedStyle && t.getComputedStyle(this[0], null),
                    r = n ? n.getPropertyValue(e) || n[e] : "";
                return r || this[0].style[e]
            }
        }),t.dom.extend({
            getCurrentStyle: function () {
                var e = document.documentElement.currentStyle ? function (e) {
                    return this[0].currentStyle ? this[0].currentStyle[e] : this[0].style[e]
                } : function (e) {
                    return this.getComputedStyle(e)
                };
                return function (t) {
                    return e.call(this, t)
                }
            }()
        }),t._util_.getWidthOrHeight = function () {
            function i(e, t) {
                var n = {};
                for (var r in t) n[r] = e.style[r], e.style[r] = t[r];
                return n
            }

            var e = {}, n = {position: "absolute", visibility: "hidden", display: "block"},
                r = /^(none|table(?!-c[ea]).+)/;
            return t.forEach(["Width", "Height"], function (s) {
                var o = {Width: ["Right", "Left"], Height: ["Top", "Bottom"]}[s];
                e["get" + s] = function (e, u) {
                    var a = t.dom(e), f = e.offsetWidth === 0 && r.test(a.getCurrentStyle("display")) && i(e, n),
                        l = e["offset" + s] || parseInt(a.getCurrentStyle(s.toLowerCase())) || 0, c = "padding|border";
                    return u && t.forEach(u.split("|"), function (e) {
                        ~c.indexOf(e) ? c = c.replace(new RegExp("\\|?" + e + "\\|?"), "") : (l += parseFloat(a.getCurrentStyle(e + o[0])) || 0, l += parseFloat(a.getCurrentStyle(e + o[1])) || 0)
                    }), c && t.forEach(c.split("|"), function (e) {
                        l -= parseFloat(a.getCurrentStyle(e + o[0] + (e === "border" ? "Width" : ""))) || 0, l -= parseFloat(a.getCurrentStyle(e + o[1] + (e === "border" ? "Width" : ""))) || 0
                    }), f && i(e, f), l
                }
            }), function (t, n, r) {
                return e[n === "width" ? "getWidth" : "getHeight"](t, r)
            }
        }(),t._util_.setPositiveNumber = function () {
            var e = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, t = new RegExp("^(" + e + ")(.*)$", "i");
            return function (e, n, r) {
                var i = t.exec(n);
                return i ? Math.max(0, i[1] - (r || 0)) + (i[2] || "px") : n
            }
        }(),t._util_.style = t.extend({
            set: function (e, t, n) {
                e.style[t] = n
            }
        }, document.documentElement.currentStyle ? {
            get: function (e, n) {
                var r = t.dom(e).getCurrentStyle(n), i;
                return /^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i.test(r) && (i = e.style.left, e.style.left = n === "fontSize" ? "1em" : r, r = e.style.pixelLeft + "px", e.style.left = i), r
            }
        } : {
            get: function (e, n) {
                return t.dom(e).getCurrentStyle(n)
            }
        }),t._util_.cssHooks = function () {
            function o(e, r, i) {
                t.type(i) === "string" && (i = t._util_.setPositiveNumber(e, i)), n.set(e, r, i)
            }

            var e = /alpha\s*\(\s*opacity\s*=\s*([^)]*)/i, n = t._util_.style, r = t._util_.support.dom.a,
                i = {fontWeight: {normal: 400, bold: 700, bolder: 700, lighter: 100}}, s = {
                    opacity: {}, width: {}, height: {}, fontWeight: {
                        get: function (e, t) {
                            var r = n.get(e, t);
                            return i.fontWeight[r] || r
                        }
                    }
                };
            return t.extend(s.opacity, /^0.5/.test(r.style.opacity) ? {
                get: function (e, n) {
                    var r = t.dom(e).getCurrentStyle(n);
                    return r === "" ? "1" : r
                }
            } : {
                get: function (t) {
                    return e.test((t.currentStyle || t.style).filter || "") ? parseFloat(RegExp.$1) / 100 + "" : "1"
                }, set: function (t, n, r) {
                    var i = (t.currentStyle || t.style).filter || "", s = r * 100;
                    t.style.zoom = 1, t.style.filter = e.test(i) ? i.replace(e, "Alpha(opacity=" + s) : i + " progid:dximagetransform.microsoft.Alpha(opacity=" + s + ")"
                }
            }), t.forEach(["width", "height"], function (e) {
                s[e] = {
                    get: function (n) {
                        return t._util_.getWidthOrHeight(n, e) + "px"
                    }, set: o
                }
            }), t.each({padding: "", border: "Width"}, function (e, t) {
                s[e + t] = {set: o};
                var n = ["Top", "Right", "Bottom", "Left"], r = 0;
                for (; r < 4; r++) s[e + n[r] + t] = {set: o}
            }), s
        }(),t._util_.cssNumber = {
            columnCount: !0,
            fillOpacity: !0,
            fontWeight: !0,
            lineHeight: !0,
            opacity: !0,
            orphans: !0,
            widows: !0,
            zIndex: !0,
            zoom: !0
        },t.string.extend({
            toCamelCase: function () {
                var e = this.valueOf();
                return e.indexOf("-") < 0 && e.indexOf("_") < 0 ? e : e.replace(/[-_][^-_]/g, function (e) {
                    return e.charAt(1).toUpperCase()
                })
            }
        }),t.dom.styleFixer = function () {
            var e = t._util_.style, n = t._util_.cssHooks, r = t._util_.cssNumber,
                i = {"float": t._util_.support.dom.a.style.cssFloat ? "cssFloat" : "styleFloat"};
            return function (s, o, u) {
                var a = t.string.toCamelCase(o), f = u === undefined ? "get" : "set", l, c;
                return a = i[a] || a, l = t.type(u) === "number" && !r[a] ? u + "px" : u, c = n.hasOwnProperty(a) && n[a][f] || e[f], c(s, a, l)
            }
        }(),t.dom.extend({
            css: function (e, n) {
                return t.check("^(?:(?:string(?:,(?:number|string|function))?)|object)$", "baidu.dom.css"), t._util_.access(this, e, n, function (e, n, r) {
                    var i = t.dom.styleFixer;
                    return i ? i(e, n, r) : r === undefined ? this.getCurrentStyle(n) : e.style[n] = r
                })
            }
        }),t.dom.extend({
            data: function () {
                var e = t.key, n = t.global("_maps_HTMLElementData");
                return function (r, i) {
                    t.forEach(this, function (n) {
                        !n[e] && (n[e] = t.id())
                    });
                    if (t.isString(r)) {
                        if (typeof i == "undefined") {
                            var s, o;
                            o = this[0] && (s = n[this[0][e]]) && s[r];
                            if (typeof o != "undefined") return o;
                            var u = this[0].getAttribute("data-" + r);
                            return ~String(u).indexOf("{") ? Function("return " + u)() : u
                        }
                        t.forEach(this, function (t) {
                            var s = n[t[e]] = n[t[e]] || {};
                            s[r] = i
                        })
                    } else t.type(r) == "object" && t.forEach(this, function (i) {
                        var s = n[i[e]] = n[i[e]] || {};
                        t.forEach(r, function (e, t) {
                            s[t] = r[t]
                        })
                    });
                    return this
                }
            }()
        }),t.lang.Class = t.base.Class,t.lang.Event = t.base.Event,t.dom.extend({
            delegate: function (e, t, n, r) {
                return typeof n == "function" && (r = n, n = null), this.on(t, e, n, r)
            }
        }),t.dom.extend({
            filter: function (e) {
                return this.pushStack(t.dom.match(this, e))
            }
        }),t.dom.extend({
            remove: function (e, n) {
                arguments.length > 0 && t.check("^string(?:,boolean)?$", "baidu.dom.remove");
                var r = e ? this.filter(e) : this;
                for (var i = 0, s; s = r[i]; i++) !n && s.nodeType === 1 && (t._util_.cleanData(s.getElementsByTagName("*")), t._util_.cleanData([s])), s.parentNode && s.parentNode.removeChild(s);
                return this
            }
        }),t.dom.extend({
            detach: function (e) {
                return e && t.check("^string$", "baidu.dom.detach"), this.remove(e, !0)
            }
        }),t.object.extend = t.extend,t.dom.getStyle = function (e, n) {
            return t.dom(t.dom.g(e)).css(n)
        },t.page = t.page || {},t.page.getScrollTop = function () {
            var e = document;
            return window.pageYOffset || e.documentElement.scrollTop || e.body.scrollTop
        },t.page.getScrollLeft = function () {
            var e = document;
            return window.pageXOffset || e.documentElement.scrollLeft || e.body.scrollLeft
        },function () {
            t.page.getMousePosition = function () {
                return {x: t.page.getScrollLeft() + e.x, y: t.page.getScrollTop() + e.y}
            };
            var e = {x: 0, y: 0};
            t.event.on(document, "onmousemove", function (t) {
                t = window.event || t, e.x = t.clientX, e.y = t.clientY
            })
        }(),t.dom.extend({
            off: function (e, n, r) {
                var i = t._util_.eventBase.core, s = this;
                return e ? typeof e == "string" ? (typeof n == "function" && (r = n, n = null), e = e.split(/[ ,]/), t.forEach(this, function (s) {
                    t.forEach(e, function (e) {
                        i.remove(s, e, r, n)
                    })
                })) : typeof e == "object" && t.forEach(e, function (e, t) {
                    s.off(t, n, e)
                }) : t.forEach(this, function (e) {
                    i.remove(e)
                }), this
            }
        }),t.event.un = t.un = function (e, n, r) {
            return typeof e == "string" && (e = t.dom.g(e)), t.dom(e).off(n.replace(/^\s*on/, ""), r), e
        },t.event.preventDefault = function (e) {
            return (new t.event(e)).preventDefault()
        },function () {
            function h() {
                e = !1, clearInterval(o), r.capture && n.releaseCapture ? n.releaseCapture() : r.capture && window.releaseEvents && window.releaseEvents(Event.MOUSEMOVE | Event.MOUSEUP), document.body.style.MozUserSelect = c;
                var i = t.dom(document);
                i.off("selectstart", d), r.autoStop && i.off("mouseup", h), t.isFunction(r.ondragend) && r.ondragend(n, r, {
                    left: f,
                    top: l
                })
            }

            function p(c) {
                if (!e) {
                    clearInterval(o);
                    return
                }
                var h = r.range || [], p = t.page.getMousePosition(), d = u + p.x - i, v = a + p.y - s;
                t.isObject(h) && h.length == 4 && (d = Math.max(h[3], d), d = Math.min(h[1] - n.offsetWidth, d), v = Math.max(h[0], v), v = Math.min(h[2] - n.offsetHeight, v)), n.style.left = d + "px", n.style.top = v + "px", f = d, l = v, t.isFunction(r.ondrag) && r.ondrag(n, r, {
                    left: f,
                    top: l
                })
            }

            function d(e) {
                return t.event.preventDefault(e, !1)
            }

            var e = !1, n, r, i, s, o, u, a, f, l, c;
            t.dom.drag = function (v, m) {
                if (!(n = t.dom.g(v))) return !1;
                r = t.object.extend({
                    autoStop: !0,
                    capture: !0,
                    interval: 16
                }, m), f = u = parseInt(t.dom.getStyle(n, "left")) || 0, l = a = parseInt(t.dom.getStyle(n, "top")) || 0, e = !0, setTimeout(function () {
                    var e = t.page.getMousePosition();
                    i = r.mouseEvent ? t.page.getScrollLeft() + r.mouseEvent.clientX : e.x, s = r.mouseEvent ? t.page.getScrollTop() + r.mouseEvent.clientY : e.y, clearInterval(o), o = setInterval(p, r.interval)
                }, 1);
                var g = t.dom(document);
                return r.autoStop && g.on("mouseup", h), g.on("selectstart", d), r.capture && n.setCapture ? n.setCapture() : r.capture && window.captureEvents && window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP), c = document.body.style.MozUserSelect, document.body.style.MozUserSelect = "none", t.isFunction(r.ondragstart) && r.ondragstart(n, r), {
                    stop: h,
                    dispose: h,
                    update: function (e) {
                        t.object.extend(r, e)
                    }
                }
            }
        }(),t.lang.isFunction = t.isFunction,t.dom.extend({
            end: function () {
                return this.prevObject || t.dom()
            }
        }),t.dom.extend({
            eq: function (e) {
                t.check("number", "baidu.dom.eq");
                var n = this.get(e);
                return this.pushStack(typeof n == "undefined" ? [] : [n])
            }
        }),t.dom.extend({
            find: function (e) {
                var n = [], r, i = "__tangram__find__", s = [];
                switch (t.type(e)) {
                    case"string":
                        this.each(function () {
                            t.merge(s, t.query(e, this))
                        });
                        break;
                    case"HTMLElement":
                        r = e.tagName + "#" + (e.id ? e.id : e.id = i), this.each(function () {
                            t.query(r, this).length > 0 && n.push(e)
                        }), e.id == i && (e.id = ""), n.length > 0 && t.merge(s, n);
                        break;
                    case"$DOM":
                        n = e.get(), this.each(function () {
                            t.forEach(t.query("*", this), function (e) {
                                for (var t = 0, r = n.length; t < r; t++) e === n[t] && (s[s.length++] = n[t])
                            })
                        })
                }
                return this.pushStack(s)
            }
        }),t.dom.extend({
            first: function () {
                return this.eq(0)
            }
        }),t.dom.getAttr = function (e, n) {
            return t.dom(t.dom.g(e)).attr(n)
        },t.dom.extend({
            getWindow: function () {
                var e = this.getDocument();
                return this.size() <= 0 ? undefined : e.parentWindow || e.defaultView
            }
        }),t.dom.extend({
            offsetParent: function () {
                return this.map(function () {
                    var e = this.offsetParent || document.body, n = /^(?:body|html)$/i;
                    while (e && t.dom(e).getCurrentStyle("position") === "static" && !n.test(e.nodeName)) e = e.offsetParent;
                    return e
                })
            }
        }),t.dom.extend({
            position: function () {
                if (this.size() <= 0) return 0;
                var e = /^(?:body|html)$/i, t = this.offset(), n = this.offsetParent(),
                    r = e.test(n[0].nodeName) ? {left: 0, top: 0} : n.offset();
                return t.left -= parseFloat(this.getCurrentStyle("marginLeft")) || 0, t.top -= parseFloat(this.getCurrentStyle("marginTop")) || 0, r.left += parseFloat(n.getCurrentStyle("borderLeftWidth")) || 0, r.top += parseFloat(n.getCurrentStyle("borderTopWidth")) || 0, {
                    left: t.left - r.left,
                    top: t.top - r.top
                }
            }
        }),t.dom.extend({
            offset: function () {
                function e(e, n, r) {
                    var i = i = t.dom(e), s = i.getCurrentStyle("position");
                    s === "static" && (e.style.position = "relative");
                    var o = i.offset(), u = i.getCurrentStyle("left"), a = i.getCurrentStyle("top"),
                        f = ~"absolute|fixed".indexOf(s) && ~("" + u + a).indexOf("auto"), l = f && i.position();
                    u = l && l.left || parseFloat(u) || 0, a = l && l.top || parseFloat(a) || 0, t.type("options") === "function" && (n = n.call(e, r, o)), n.left != undefined && (e.style.left = n.left - o.left + u + "px"), n.top != undefined && (e.style.top = n.top - o.top + a + "px")
                }

                return function (n) {
                    if (n) {
                        t.check("^(?:object|function)$", "baidu.dom.offset");
                        for (var r = 0, i; i = this[r]; r++) e(i, n, r);
                        return this
                    }
                    var s = this[0], o = this.getDocument(), u = {left: 0, top: 0}, a, f;
                    if (!o) return;
                    return f = o.documentElement, t._util_.contains(f, s) ? (typeof s.getBoundingClientRect != "undefined" && (u = s.getBoundingClientRect()), a = this.getWindow(), {
                        left: u.left + (a.pageXOffset || f.scrollLeft) - (f.clientLeft || 0),
                        top: u.top + (a.pageYOffset || f.scrollTop) - (f.clientTop || 0)
                    }) : u
                }
            }()
        }),t.dom.extend({
            has: function (e) {
                var n = [], r = t.dom(document.body);
                return t.forEach(this, function (t) {
                    r[0] = t, r.find(e).length && n.push(t)
                }), t.dom(n)
            }
        }),t.dom.extend({
            hasClass: function (e) {
                if (arguments.length <= 0 || typeof e == "function") return this;
                if (this.size() <= 0) return !1;
                e = e.replace(/^\s+/g, "").replace(/\s+$/g, "").replace(/\s+/g, " ");
                var n = e.split(" "), r;
                return t.forEach(this, function (e) {
                    var t = e.className;
                    for (var i = 0; i < n.length; i++) if (!~(" " + t + " ").indexOf(" " + n[i] + " ")) {
                        r = !1;
                        return
                    }
                    if (r !== !1) {
                        r = !0;
                        return
                    }
                }), r
            }
        }),t._util_.getWindowOrDocumentWidthOrHeight = t._util_.getWindowOrDocumentWidthOrHeight || function () {
            var e = {window: {}, document: {}};
            return t.forEach(["Width", "Height"], function (n) {
                var r = "client" + n, i = "offset" + n, s = "scroll" + n;
                e.window["get" + n] = function (e) {
                    var n = e.document, i = n.documentElement[r];
                    return t.browser.isStrict && i || n.body && n.body[r] || i
                }, e.document["get" + n] = function (e) {
                    var t = e.documentElement;
                    return t[r] >= t[s] ? t[r] : Math.max(e.body[s], t[s], e.body[i], t[i])
                }
            }), function (t, n, r) {
                return e[n][r === "width" ? "getWidth" : "getHeight"](t)
            }
        }(),t.dom.extend({
            height: function (e) {
                return t._util_.access(this, "height", e, function (e, n, r) {
                    var i = r !== undefined, s = i && parseFloat(r),
                        o = e != null && e == e.window ? "window" : e.nodeType === 9 ? "document" : !1;
                    if (i && s < 0 || isNaN(s)) return;
                    return i && /^(?:\d*\.)?\d+$/.test(r += "") && (r += "px"), o ? t._util_.getWindowOrDocumentWidthOrHeight(e, o, n) : i ? e.style.height = r : t._util_.getWidthOrHeight(e, n)
                })
            }
        }),t._util_.isHidden = function (e) {
            return t.dom(e).getCurrentStyle("display") === "none" || !t._util_.contains(e.ownerDocument, e)
        },t.dom.extend({
            hide: function () {
                var e = [], n, r, i;
                return this.each(function (s, o) {
                    if (!o.style) return;
                    n = t(o), e[s] = n.data("olddisplay"), i = o.style.display, e[s] || (r = t._util_.isHidden(o), (i && i !== "none" || !r) && n.data("olddisplay", r ? i : n.getCurrentStyle("display"))), o.style.display = "none"
                })
            }
        }),t.dom.extend({
            innerHeight: function () {
                if (this.size() <= 0) return 0;
                var e = this[0], n = e != null && e === e.window ? "window" : e.nodeType === 9 ? "document" : !1;
                return n ? t._util_.getWindowOrDocumentWidthOrHeight(e, n, "height") : t._util_.getWidthOrHeight(e, "height", "padding")
            }
        }),t.dom.extend({
            innerWidth: function () {
                if (this.size() <= 0) return 0;
                var e = this[0], n = e != null && e === e.window ? "window" : e.nodeType === 9 ? "document" : !1;
                return n ? t._util_.getWindowOrDocumentWidthOrHeight(e, n, "width") : t._util_.getWidthOrHeight(e, "width", "padding")
            }
        }),t.dom.extend({
            insertAfter: function (e) {
                var n = [], r = n.push;
                return t.check("^(?:string|HTMLElement|\\$DOM)$", "baidu.dom.insertAfter"), t._util_.smartInsertTo(this, e, function (e) {
                    r.apply(n, t.makeArray(e.childNodes)), this.parentNode.insertBefore(e, this.nextSibling)
                }, "after"), this.pushStack(n)
            }
        }),t.dom.extend({
            insertBefore: function (e) {
                var n = [], r = n.push;
                return t.check("^(?:string|HTMLElement|\\$DOM)$", "baidu.dom.insertBefore"), t._util_.smartInsertTo(this, e, function (e) {
                    r.apply(n, t.makeArray(e.childNodes)), this.parentNode.insertBefore(e, this)
                }, "before"), this.pushStack(n)
            }
        }),t.dom.extend({
            insertHTML: function (e, n) {
                var r, i, s = this[0];
                return s.insertAdjacentHTML && !t.browser.opera ? s.insertAdjacentHTML(e, n) : (r = s.ownerDocument.createRange(), e = e.toUpperCase(), e == "AFTERBEGIN" || e == "BEFOREEND" ? (r.selectNodeContents(s), r.collapse(e == "AFTERBEGIN")) : (i = e == "BEFOREBEGIN", r[i ? "setStartBefore" : "setEndAfter"](s), r.collapse(i)), r.insertNode(r.createContextualFragment(n))), s
            }
        }),t.dom.extend({
            is: function (e) {
                return t.dom.match(this, e).length > 0
            }
        }),t.dom.extend({
            last: function () {
                return this.eq(-1)
            }
        }),t.dom.extend({
            next: function (e) {
                var n = [];
                return t.forEach(this, function (e) {
                    while ((e = e.nextSibling) && e && e.nodeType != 1) ;
                    e && (n[n.length++] = e)
                }), this.pushStack(e ? t.dom.match(n, e) : n)
            }
        }),t.dom.extend({
            nextAll: function (e) {
                var n = [];
                return t.forEach(this, function (e) {
                    while (e = e.nextSibling) e && e.nodeType == 1 && n.push(e)
                }), this.pushStack(t.dom.match(n, e))
            }
        }),t.dom.extend({
            nextUntil: function (e, n) {
                var r = t.array();
                return t.forEach(this, function (n) {
                    var i = t.array();
                    while (n = n.nextSibling) n && n.nodeType == 1 && i.push(n);
                    if (e && i.length) {
                        var s = t.dom.match(i, e);
                        s.length && (i = i.slice(0, i.indexOf(s[0])))
                    }
                    t.merge(r, i)
                }), this.pushStack(t.dom.match(r, n))
            }
        }),t.dom.extend({
            not: function (e) {
                var n, r, i, s = this.get(), o = t.isArray(e) ? e : t.dom.match(this, e);
                for (n = s.length - 1; n > -1; n--) for (r = 0, i = o.length; r < i; r++) o[r] === s[n] && s.splice(n, 1);
                return this.pushStack(s)
            }
        }),t.dom.extend({
            one: function (e, t, n, r) {
                return this.on(e, t, n, r, 1)
            }
        }),t.dom.extend({
            outerHeight: function (e) {
                if (this.size() <= 0) return 0;
                var n = this[0], r = n != null && n === n.window ? "window" : n.nodeType === 9 ? "document" : !1;
                return r ? t._util_.getWindowOrDocumentWidthOrHeight(n, r, "height") : t._util_.getWidthOrHeight(n, "height", "padding|border" + (e ? "|margin" : ""))
            }
        }),t.dom.extend({
            outerWidth: function (e) {
                if (this.size() <= 0) return 0;
                var n = this[0], r = n != null && n === n.window ? "window" : n.nodeType === 9 ? "document" : !1;
                return r ? t._util_.getWindowOrDocumentWidthOrHeight(n, r, "width") : t._util_.getWidthOrHeight(n, "width", "padding|border" + (e ? "|margin" : ""))
            }
        }),t.dom.extend({
            parent: function (e) {
                var n = [];
                return t.forEach(this, function (e) {
                    (e = e.parentNode) && e.nodeType == 1 && n.push(e)
                }), this.pushStack(t.dom.match(n, e))
            }
        }),t.dom.extend({
            parents: function (e) {
                var n = [];
                return t.forEach(this, function (e) {
                    var r = [];
                    while ((e = e.parentNode) && e.nodeType == 1) r.push(e);
                    t.merge(n, r)
                }), this.pushStack(t.dom.match(n, e))
            }
        }),t.dom.extend({
            parentsUntil: function (e, n) {
                t.check("(string|HTMLElement)(,.+)?", "baidu.dom.parentsUntil");
                var r = [];
                return t.forEach(this, function (n) {
                    var i = t.array();
                    while ((n = n.parentNode) && n.nodeType == 1) i.push(n);
                    if (e && i.length) {
                        var s = t.dom.match(i, e);
                        s.length && (i = i.slice(0, i.indexOf(s[0])))
                    }
                    t.merge(r, i)
                }), this.pushStack(t.dom.match(r, n))
            }
        }),t.dom.extend({
            prepend: function () {
                return t.check("^(?:string|function|HTMLElement|\\$DOM)(?:,(?:string|array|HTMLElement|\\$DOM))*$", "baidu.dom.prepend"), t._util_.smartInsert(this, arguments, function (e) {
                    this.nodeType === 1 && this.insertBefore(e, this.firstChild)
                }), this
            }
        }),t.dom.extend({
            prependTo: function (e) {
                var n = [], r = n.push;
                return t.check("^(?:string|HTMLElement|\\$DOM)$", "baidu.dom.prependTo"), t._util_.smartInsertTo(this, e, function (e) {
                    r.apply(n, t.makeArray(e.childNodes)), this.insertBefore(e, this.firstChild)
                }), this.pushStack(n)
            }
        }),t.dom.extend({
            prev: function (e) {
                var n = [];
                return t.forEach(this, function (e) {
                    while (e = e.previousSibling) if (e.nodeType == 1) {
                        n.push(e);
                        break
                    }
                }), this.pushStack(t.dom.match(n, e))
            }
        }),t.dom.extend({
            prevAll: function (e) {
                var n = t.array();
                return t.forEach(this, function (e) {
                    var r = [];
                    while (e = e.previousSibling) e.nodeType == 1 && r.push(e);
                    t.merge(n, r.reverse())
                }), this.pushStack(typeof e == "string" ? t.dom.match(n, e) : n.unique())
            }
        }),t.dom.extend({
            prevUntil: function (e, n) {
                t.check("(string|HTMLElement)(,.+)?", "baidu.dom.prevUntil");
                var r = [];
                return t.forEach(this, function (n) {
                    var i = t.array();
                    while (n = n.previousSibling) n && n.nodeType == 1 && i.push(n);
                    if (e && i.length) {
                        var s = t.dom.match(i, e);
                        s.length && (i = i.slice(0, i.indexOf(s[0])))
                    }
                    t.merge(r, i)
                }), this.pushStack(t.dom.match(r, n))
            }
        }),t.dom.extend({
            prop: function (e, n) {
                return t._util_.access(this, e, n, function (e, n, r) {
                    return t._util_.prop(e, n, r)
                })
            }
        }),t.string.extend({
            escapeReg: function () {
                return this.replace(new RegExp("([.*+?^=!:${}()|[\\]/\\\\])", "g"), "\\$1")
            }
        }),void function (e, n) {
            function W(e, t, n, r) {
                var i, u, a, f, l = o++, c = 0, h = t.length;
                typeof n == "string" && !d.test(n) && (n = n.toLowerCase(), f = n);
                for (; c < h; c++) {
                    i = t[c];
                    if (i) {
                        u = !1, i = i[e];
                        while (i) {
                            if (i[s] === l) {
                                u = t[i.sizset];
                                break
                            }
                            a = i.nodeType === 1, a && !r && (i[s] = l, i.sizset = c);
                            if (f) {
                                if (i.nodeName.toLowerCase() === n) {
                                    u = i;
                                    break
                                }
                            } else if (a) if (typeof n != "string") {
                                if (i === n) {
                                    u = !0;
                                    break
                                }
                            } else if (F(n, [i]).length > 0) {
                                u = i;
                                break
                            }
                            i = i[e]
                        }
                        t[c] = u
                    }
                }
            }

            t.query = function (e, n, r) {
                return t.merge(r || [], t.sizzle(e, n))
            };
            var r = e.document, i = r.documentElement, s = "sizcache" + (Math.random() + "").replace(".", ""), o = 0,
                u = Object.prototype.toString, a = "undefined", f = !1, l = !0,
                c = /^#([\w\-]+$)|^(\w+$)|^\.([\w\-]+$)/,
                h = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
                p = /\\/g, d = /\W/, v = /^\w/, m = /\D/, g = /(-?)(\d*)(?:n([+\-]?\d*))?/, y = /^\+|\s*/g
                , b = /h\d/i, w = /input|select|textarea|button/i, E = /[\t\n\f\r]/g,
                S = "(?:[-\\w]|[^\\x00-\\xa0]|\\\\.)", x = {
                    ID: new RegExp("#(" + S + "+)"),
                    CLASS: new RegExp("\\.(" + S + "+)"),
                    NAME: new RegExp("\\[name=['\"]*(" + S + "+)['\"]*\\]"),
                    TAG: new RegExp("^(" + S.replace("[-", "[-\\*") + "+)"),
                    ATTR: new RegExp("\\[\\s*(" + S + "+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?" + S + "*)|)|)\\s*\\]"),
                    PSEUDO: new RegExp(":(" + S + "+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?"),
                    CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
                    POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/
                }, T = x.POS, N = function () {
                    var e, t = function (e, t) {
                        return "\\" + (t - 0 + 1)
                    }, n = {};
                    for (e in x) x[e] = new RegExp(x[e].source + /(?![^\[]*\])(?![^\(]*\))/.source), n[e] = new RegExp(/(^(?:.|\r|\n)*?)/.source + x[e].source.replace(/\\(\d+)/g, t));
                    return x.globalPOS = T, n
                }(), C = function (e) {
                    var t = !1, n = r.createElement("div");
                    try {
                        t = e(n)
                    } catch (i) {
                    }
                    return n = null, t
                }, k = C(function (e) {
                    var t = !0, n = "script" + (new Date).getTime();
                    return e.innerHTML = "<a name ='" + n + "'/>", i.insertBefore(e, i.firstChild), r.getElementById(n) && (t = !1), i.removeChild(e), t
                }), L = C(function (e) {
                    return e.appendChild(r.createComment("")), e.getElementsByTagName("*").length === 0
                }), A = C(function (e) {
                    return e.innerHTML = "<a href='#'></a>", e.firstChild && typeof e.firstChild.getAttribute !== a && e.firstChild.getAttribute("href") === "#"
                }), O = C(function (e) {
                    return e.innerHTML = "<div class='test e'></div><div class='test'></div>", !e.getElementsByClassName || e.getElementsByClassName("e").length === 0 ? !1 : (e.lastChild.className = "e", e.getElementsByClassName("e").length !== 1)
                });
            [0, 0].sort(function () {
                return l = !1, 0
            });
            var M = function (e, i, s) {
                s = s || [], i = i || r;
                var o, u, a, f = i.nodeType;
                if (f !== 1 && f !== 9) return [];
                if (!e || typeof e != "string") return s;
                e = t.string(e).trim();
                if (!e) return s;
                a = D(i);
                if (!a) if (o = c.exec(e)) if (o[1]) {
                    if (f === 9) {
                        u = i.getElementById(o[1]);
                        if (!u || !u.parentNode) return P([], s);
                        if (u.id === o[1]) return P([u], s)
                    } else if (i.ownerDocument && (u = i.ownerDocument.getElementById(o[1])) && B(i, u) && u.id === o[1]) return P([u], s)
                } else {
                    if (o[2]) return e === "body" && i.body ? P([i.body], s) : P(i.getElementsByTagName(e), s);
                    if (O && o[3] && i.getElementsByClassName) return P(i.getElementsByClassName(o[3]), s)
                }
                return _(e, i, s, n, a)
            }, _ = function (e, t, n, r, i) {
                var s, o, a, f, l, c, p, d, v = t, m = !0, g = [], y = e;
                do {
                    h.exec(""), s = h.exec(y);
                    if (s) {
                        y = s[3], g.push(s[1]);
                        if (s[2]) {
                            f = s[3];
                            break
                        }
                    }
                } while (s);
                if (g.length > 1 && T.exec(e)) if (g.length === 2 && R.relative[g[0]]) o = X(g[0] + g[1], t, r, i); else {
                    o = R.relative[g[0]] ? [t] : M(g.shift(), t);
                    while (g.length) e = g.shift(), R.relative[e] && (e += g.shift()), o = X(e, o, r, i)
                } else {
                    !r && g.length > 1 && t.nodeType === 9 && !i && x.ID.test(g[0]) && !x.ID.test(g[g.length - 1]) && (l = j(g.shift(), t, i), t = l.expr ? F(l.expr, l.set)[0] : l.set[0]);
                    if (t) {
                        l = r ? {
                            expr: g.pop(),
                            set: P(r)
                        } : j(g.pop(), g.length >= 1 && (g[0] === "~" || g[0] === "+") && t.parentNode || t, i), o = l.expr ? F(l.expr, l.set) : l.set, g.length > 0 ? a = P(o) : m = !1;
                        while (g.length) c = g.pop(), p = c, R.relative[c] ? p = g.pop() : c = "", p == null && (p = t), R.relative[c](a, p, i)
                    } else a = g = []
                }
                a || (a = o), a || I(c || e);
                if (u.call(a) === "[object Array]") if (!m) n.push.apply(n, a); else if (t && t.nodeType === 1) for (d = 0; a[d] != null; d++) a[d] && (a[d] === !0 || a[d].nodeType === 1 && B(t, a[d])) && n.push(o[d]); else for (d = 0; a[d] != null; d++) a[d] && a[d].nodeType === 1 && n.push(o[d]); else P(a, n);
                return f && (_(f, v, n, r, i), H(n)), n
            }, D = t._util_.isXML, P = t.makeArray, H = function (e) {
                if (U) {
                    f = l, e.sort(U);
                    if (f) for (var t = 1; t < e.length; t++) e[t] === e[t - 1] && e.splice(t--, 1)
                }
                return e
            }, B = t._util_.contains, j = function (e, t, n) {
                var r, i, s, o, u, f;
                if (!e) return [];
                for (i = 0, s = R.order.length; i < s; i++) {
                    u = R.order[i];
                    if (o = N[u].exec(e)) {
                        f = o[1], o.splice(1, 1);
                        if (f.substr(f.length - 1) !== "\\") {
                            o[1] = (o[1] || "").replace(p, ""), r = R.find[u](o, t, n);
                            if (r != null) {
                                e = e.replace(x[u], "");
                                break
                            }
                        }
                    }
                }
                return r || (r = typeof t.getElementsByTagName !== a ? t.getElementsByTagName("*") : []), {
                    set: r,
                    expr: e
                }
            }, F = function (e, t, r, i) {
                var s, o, u, a, f, l, c, h, p, d = e, v = [], m = t, g = t && t[0] && D(t[0]);
                while (e && t.length) {
                    for (u in R.filter) if ((s = N[u].exec(e)) != null && s[2]) {
                        l = R.filter[u], c = s[1], o = !1, s.splice(1, 1);
                        if (c.substr(c.length - 1) === "\\") continue;
                        m === v && (v = []);
                        if (R.preFilter[u]) {
                            s = R.preFilter[u](s, m, r, v, i, g);
                            if (!s) o = a = !0; else if (s === !0) continue
                        }
                        if (s) for (h = 0; (f = m[h]) != null; h++) f && (a = l(f, s, h, m), p = i ^ a, r && a != null ? p ? o = !0 : m[h] = !1 : p && (v.push(f), o = !0));
                        if (a !== n) {
                            r || (m = v), e = e.replace(x[u], "");
                            if (!o) return [];
                            break
                        }
                    }
                    if (e === d) {
                        if (o != null) break;
                        I(e)
                    }
                    d = e
                }
                return m
            }, I = function (e) {
                throw new Error(e)
            }, q = function (e) {
                var t, n, r = e.nodeType, i = "";
                if (r) {
                    if (r === 1 || r === 9 || r === 11) {
                        if (typeof e.textContent == "string") return e.textContent;
                        for (e = e.firstChild; e; e = e.nextSibling) i += q(e)
                    } else if (r === 3 || r === 4) return e.nodeValue
                } else for (t = 0; n = e[t]; t++) n.nodeType !== 8 && (i += q(n));
                return i
            }, R = {
                match: x,
                leftMatch: N,
                order: ["ID", "NAME", "TAG"],
                attrMap: {"class": "className", "for": "htmlFor"},
                attrHandle: {
                    href: A ? function (e) {
                        return e.getAttribute("href")
                    } : function (e) {
                        return e.getAttribute("href", 2)
                    }, type: function (e) {
                        return e.getAttribute("type")
                    }
                },
                relative: {
                    "+": function (e, t) {
                        var n = typeof t == "string", r = n && !d.test(t), i = n && !r;
                        r && (t = t.toLowerCase());
                        for (var s = 0, o = e.length, u; s < o; s++) if (u = e[s]) {
                            while ((u = u.previousSibling) && u.nodeType !== 1) ;
                            e[s] = i || u && u.nodeName.toLowerCase() === t ? u || !1 : u === t
                        }
                        i && F(t, e, !0)
                    }, ">": function (e, t) {
                        var n, r = typeof t == "string", i = 0, s = e.length;
                        if (r && !d.test(t)) {
                            t = t.toLowerCase();
                            for (; i < s; i++) {
                                n = e[i];
                                if (n) {
                                    var o = n.parentNode;
                                    e[i] = o.nodeName.toLowerCase() === t ? o : !1
                                }
                            }
                        } else {
                            for (; i < s; i++) n = e[i], n && (e[i] = r ? n.parentNode : n.parentNode === t);
                            r && F(t, e, !0)
                        }
                    }, "": function (e, t, n) {
                        W("parentNode", e, t, n)
                    }, "~": function (e, t, n) {
                        W("previousSibling", e, t, n)
                    }
                },
                find: {
                    ID: k ? function (e, t, n) {
                        if (typeof t.getElementById !== a && !n) {
                            var r = t.getElementById(e[1]);
                            return r && r.parentNode ? [r] : []
                        }
                    } : function (e, t, r) {
                        if (typeof t.getElementById !== a && !r) {
                            var i = t.getElementById(e[1]);
                            return i ? i.id === e[1] || typeof i.getAttributeNode !== a && i.getAttributeNode("id").nodeValue === e[1] ? [i] : n : []
                        }
                    }, NAME: function (e, t) {
                        if (typeof t.getElementsByName !== a) {
                            var n = [], r = t.getElementsByName(e[1]), i = 0, s = r.length;
                            for (; i < s; i++) r[i].getAttribute("name") === e[1] && n.push(r[i]);
                            return n.length === 0 ? null : n
                        }
                    }, TAG: L ? function (e, t) {
                        if (typeof t.getElementsByTagName !== a) return t.getElementsByTagName(e[1])
                    } : function (e, t) {
                        var n = t.getElementsByTagName(e[1]);
                        if (e[1] === "*") {
                            var r = [], i = 0;
                            for (; n[i]; i++) n[i].nodeType === 1 && r.push(n[i]);
                            n = r
                        }
                        return n
                    }
                },
                preFilter: {
                    CLASS: function (e, t, n, r, i, s) {
                        e = " " + e[1].replace(p, "") + " ";
                        if (s) return e;
                        for (var o = 0, u; (u = t[o]) != null; o++) u && (i ^ (u.className && ~(" " + u.className + " ").replace(E, " ").indexOf(e)) ? n || r.push(u) : n && (t[o] = !1));
                        return !1
                    }, ID: function (e) {
                        return e[1].replace(p, "")
                    }, TAG: function (e, t) {
                        return e[1].replace(p, "").toLowerCase()
                    }, CHILD: function (e) {
                        if (e[1] === "nth") {
                            e[2] || I(e[0]), e[2] = e[2].replace(y, "");
                            var t = g.exec(e[2] === "even" && "2n" || e[2] === "odd" && "2n+1" || !m.test(e[2]) && "0n+" + e[2] || e[2]);
                            e[2] = t[1] + (t[2] || 1) - 0, e[3] = t[3] - 0
                        } else e[2] && I(e[0]);
                        return e[0] = o++, e
                    }, ATTR: function (e, t, n, r, i, s) {
                        var o = e[1] = e[1].replace(p, "");
                        return !s && R.attrMap[o] && (e[1] = R.attrMap[o]), e[4] = (e[4] || e[5] || "").replace(p, ""), e[2] === "~=" && (e[4] = " " + e[4] + " "), e
                    }, PSEUDO: function (e, t, n, i, s, o) {
                        if (e[1] === "not") {
                            if (!((h.exec(e[3]) || "").length > 1 || v.test(e[3]))) {
                                var u = F(e[3], t, n, !s);
                                return n || i.push.apply(i, u), !1
                            }
                            e[3] = _(e[3], r, [], t, o)
                        } else if (x.POS.test(e[0]) || x.CHILD.test(e[0])) return !0;
                        return e
                    }, POS: function (e) {
                        return e.unshift(!0), e
                    }
                },
                filters: {
                    enabled: function (e) {
                        return e.disabled === !1
                    }, disabled: function (e) {
                        return e.disabled === !0
                    }, checked: function (e) {
                        var t = e.nodeName.toLowerCase();
                        return t === "input" && !!e.checked || t === "option" && !!e.selected
                    }, selected: function (e) {
                        return e.parentNode && e.parentNode.selectedIndex, e.selected === !0
                    }, parent: function (e) {
                        return !!e.firstChild
                    }, empty: function (e) {
                        return !e.firstChild
                    }, has: function (e, t, n) {
                        return !!M(n[3], e).length
                    }, header: function (e) {
                        return b.test(e.nodeName)
                    }, text: function (e) {
                        var t = e.getAttribute("type"), n = e.type;
                        return e.nodeName.toLowerCase() === "input" && "text" === n && (t === null || t.toLowerCase() === n)
                    }, radio: function (e) {
                        return e.nodeName.toLowerCase() === "input" && "radio" === e.type
                    }, checkbox: function (e) {
                        return e.nodeName.toLowerCase() === "input" && "checkbox" === e.type
                    }, file: function (e) {
                        return e.nodeName.toLowerCase() === "input" && "file" === e.type
                    }, password: function (e) {
                        return e.nodeName.toLowerCase() === "input" && "password" === e.type
                    }, submit: function (e) {
                        var t = e.nodeName.toLowerCase();
                        return (t === "input" || t === "button") && "submit" === e.type
                    }, image: function (e) {
                        return e.nodeName.toLowerCase() === "input" && "image" === e.type
                    }, reset: function (e) {
                        var t = e.nodeName.toLowerCase();
                        return (t === "input" || t === "button") && "reset" === e.type
                    }, button: function (e) {
                        var t = e.nodeName.toLowerCase();
                        return t === "input" && "button" === e.type || t === "button"
                    }, input: function (e) {
                        return w.test(e.nodeName)
                    }, focus: function (e) {
                        var t = e.ownerDocument;
                        return e === t.activeElement && (!t.hasFocus || t.hasFocus()) && (!!e.type || !!e.href)
                    }, active: function (e) {
                        return e === e.ownerDocument.activeElement
                    }, contains: function (e, t, n) {
                        return (e.textContent || e.innerText || q(e)).indexOf(n[3]) >= 0
                    }
                },
                setFilters: {
                    first: function (e, t) {
                        return t === 0
                    }, last: function (e, t, n, r) {
                        return t === r.length - 1
                    }, even: function (e, t) {
                        return t % 2 === 0
                    }, odd: function (e, t) {
                        return t % 2 === 1
                    }, lt: function (e, t, n) {
                        return t < n[3] - 0
                    }, gt: function (e, t, n) {
                        return t > n[3] - 0
                    }, nth: function (e, t, n) {
                        return n[3] - 0 === t
                    }, eq: function (e, t, n) {
                        return n[3] - 0 === t
                    }
                },
                filter: {
                    PSEUDO: function (e, t, n, r) {
                        var i = t[1], s = R.filters[i];
                        if (s) return s(e, n, t, r);
                        if (i === "not") {
                            var o = t[3], u = 0, a = o.length;
                            for (; u < a; u++) if (o[u] === e) return !1;
                            return !0
                        }
                        I(i)
                    }, CHILD: function (e, t) {
                        var n, r, i, o, u, a, f, l = t[1], c = e;
                        switch (l) {
                            case"only":
                            case"first":
                                while (c = c.previousSibling) if (c.nodeType === 1) return !1;
                                if (l === "first") return !0;
                                c = e;
                            case"last":
                                while (c = c.nextSibling) if (c.nodeType === 1) return !1;
                                return !0;
                            case"nth":
                                n = t[2], r = t[3];
                                if (n === 1 && r === 0) return !0;
                                i = t[0], o = e.parentNode;
                                if (o && (o[s] !== i || !e.nodeIndex)) {
                                    a = 0;
                                    for (c = o.firstChild; c; c = c.nextSibling) c.nodeType === 1 && (c.nodeIndex = ++a);
                                    o[s] = i
                                }
                                return f = e.nodeIndex - r, n === 0 ? f === 0 : f % n === 0 && f / n >= 0
                        }
                    }, ID: k ? function (e, t) {
                        return e.nodeType === 1 && e.getAttribute("id") === t
                    } : function (e, t) {
                        var n = typeof e.getAttributeNode !== a && e.getAttributeNode("id");
                        return e.nodeType === 1 && n && n.nodeValue === t
                    }, TAG: function (e, t) {
                        return t === "*" && e.nodeType === 1 || !!e.nodeName && e.nodeName.toLowerCase() === t
                    }, CLASS: function (e, t) {
                        return (" " + (e.className || e.getAttribute("class")) + " ").indexOf(t) > -1
                    }, ATTR: function (e, t) {
                        var n = t[1],
                            r = R.attrHandle[n] ? R.attrHandle[n](e) : e[n] != null ? e[n] : e.getAttribute(n),
                            i = r + "", s = t[2], o = t[4];
                        return r == null ? s === "!=" : s === "=" ? i === o : s === "*=" ? i.indexOf(o) >= 0 : s === "~=" ? (" " + i + " ").indexOf(o) >= 0 : o ? s === "!=" ? i !== o : s === "^=" ? i.indexOf(o) === 0 : s === "$=" ? i.substr(i.length - o.length) === o : s === "|=" ? i === o || i.substr(0, o.length + 1) === o + "-" : !1 : i && r !== !1
                    }, POS: function (e, t, n, r) {
                        var i = t[2], s = R.setFilters[i];
                        if (s) return s(e, n, t, r)
                    }
                }
            };
            O && (R.order.splice(1, 0, "CLASS"), R.find.CLASS = function (e, t, n) {
                if (typeof t.getElementsByClassName !== a && !n) return t.getElementsByClassName(e[1])
            });
            var U, z;
            i.compareDocumentPosition ? U = function (e, t) {
                return e === t ? (f = !0, 0) : !e.compareDocumentPosition || !t.compareDocumentPosition ? e.compareDocumentPosition ? -1 : 1 : e.compareDocumentPosition(t) & 4 ? -1 : 1
            } : (U = function (e, t) {
                if (e === t) return f = !0, 0;
                if (e.sourceIndex && t.sourceIndex) return e.sourceIndex - t.sourceIndex;
                var n, r, i = [], s = [], o = e.parentNode, u = t.parentNode, a = o;
                if (o === u) return z(e, t);
                if (!o) return -1;
                if (!u) return 1;
                while (a) i.unshift(a), a = a.parentNode;
                a = u;
                while (a) s.unshift(a), a = a.parentNode;
                n = i.length, r = s.length;
                for (var l = 0; l < n && l < r; l++) if (i[l] !== s[l]) return z(i[l], s[l]);
                return l === n ? z(e, s[l], -1) : z(i[l], t, 1)
            }, z = function (e, t, n) {
                if (e === t) return n;
                var r = e.nextSibling;
                while (r) {
                    if (r === t) return -1;
                    r = r.nextSibling
                }
                return 1
            }), r.querySelectorAll && function () {
                var e = _, t = "__sizzle__", n = /^\s*[+~]/, r = /'/g, i = [];
                C(function (e) {
                    e.innerHTML = "<select><option selected></option></select>", e.querySelectorAll("[selected]").length || i.push("\\[[\\x20\\t\\n\\r\\f]*(?:checked|disabled|ismap|multiple|readonly|selected|value)"), e.querySelectorAll(":checked").length || i.push(":checked")
                }), C(function (e) {
                    e.innerHTML = "<p class=''></p>", e.querySelectorAll("[class^='']").length && i.push("[*^$]=[\\x20\\t\\n\\r\\f]*(?:\"\"|'')"), e.innerHTML = "<input type='hidden'>", e.querySelectorAll(":enabled").length || i.push(":enabled", ":disabled")
                }), i = i.length && new RegExp(i.join("|")), _ = function (s, o, u, a, f) {
                    if (!a && !f && (!i || !i.test(s))) if (o.nodeType === 9) try {
                        return P(o.querySelectorAll(s), u)
                    } catch (l) {
                    } else if (o.nodeType === 1 && o.nodeName.toLowerCase() !== "object") {
                        var c = o, h = o.getAttribute("id"), p = h || t, d = o.parentNode, v = n.test(s);
                        h ? p = p.replace(r, "\\$&") : o.setAttribute("id", p), v && d && (o = d);
                        try {
                            if (!v || d) return P(o.querySelectorAll("[id='" + p + "'] " + s), u)
                        } catch (l) {
                        } finally {
                            h || c.removeAttribute("id")
                        }
                    }
                    return e(s, o, u, a, f)
                }
            }();
            var X = function (e, t, n, r) {
                var i, s = [], o = "", u = t.nodeType ? [t] : t, a = 0, f = u.length;
                while (i = x.PSEUDO.exec(e)) o += i[0], e = e.replace(x.PSEUDO, "");
                R.relative[e] && (e += "*");
                for (; a < f; a++) _(e, u[a], s, n, r);
                return F(o, s)
            };
            e.Sizzle = t.sizzle = M, t.query.matches = function (e, t) {
                return _(e, r, [], t, D(r))
            }
        }(window),t.dom.extend({
            ready: function () {
                var e = this, n, r = window.document;
                t._util_.isDomReady = !1, t._util_._readyWait = 1, t.dom.holdReady = function (e) {
                    e ? t._util_.readyWait++ : i(!0)
                };
                var i = function (e) {
                    if (e === !0 ? --t._util_.readyWait : t._util_.isDomReady) return;
                    if (!r.body) return setTimeout(i, 1);
                    t._util_.isReady = !0;
                    if (e !== !0 && --t._util_.readyWait > 0) return;
                    n.resolveWith(r), t.dom.trigger && t.dom(r).trigger("ready").off("ready")
                }, s = function () {
                    r.addEventListener ? (r.removeEventListener("DOMContentLoaded", s, !1), i()) : r.readyState === "complete" && (r.detachEvent("onreadystatechange", s), i())
                }, o = function (e) {
                    if (!n) {
                        n = t.Deferred();
                        if (r.readyState === "complete") setTimeout(i, 1); else if (r.addEventListener) r.addEventListener("DOMContentLoaded", s, !1), window.addEventListener("load", i, !1); else {
                            r.attachEvent("onreadystatechange", s), window.attachEvent("onload", i);
                            var o = !1;
                            try {
                                o = window.frameElement == null && r.documentElement
                            } catch (u) {
                            }
                            o && o.doScroll && function a() {
                                if (!t._util_.isDomReady) {
                                    try {
                                        o.doScroll("left")
                                    } catch (e) {
                                        return setTimeout(a, 50)
                                    }
                                    i()
                                }
                            }()
                        }
                    }
                    return n.promise(e)
                };
                return function (t) {
                    return o().done(t), e
                }
            }()
        }),t.dom.extend({
            removeAttr: function (e) {
                return this.each(function (n, r) {
                    t._util_.removeAttr(r, e)
                }), this
            }
        }),t.dom.extend({
            removeClass: function (e) {
                var n = typeof e, r = " ";
                arguments.length || t.forEach(this, function (e) {
                    e.className = ""
                });
                if (n == "string") {
                    e = t.string.trim(e);
                    var i = e.split(" ");
                    t.forEach(this, function (e) {
                        var n = e.className;
                        for (var s = 0; s < i.length; s++) while (~(r + n + r).indexOf(r + i[s] + r)) n = (r + n + r).replace(r + i[s] + r, r);
                        e.className = t.string.trim(n)
                    })
                } else n == "function" && t.forEach(this, function (n, r, i) {
                    t.dom(n).removeClass(e.call(n, r, n.className))
                });
                return this
            }
        }),t.dom.extend({
            removeData: function () {
                var e = t.key, n = t.global("_maps_HTMLElementData");
                return function (r) {
                    return t.forEach(this, function (n) {
                        !n[e] && (n[e] = t.id())
                    }), t.forEach(this, function (i) {
                        var s = n[i[e]];
                        typeof r == "string" ? s && delete s[r] : t.type(r) == "array" && t.forEach(r, function (e) {
                            s && delete s[e]
                        })
                    }), this
                }
            }()
        }),t.dom.extend({
            removeProp: function (e) {
                return e = t._util_.propFixer[e] || e, this.each(function (t, n) {
                    try {
                        n[e] = undefined, delete n[e]
                    } catch (r) {
                    }
                }), this
            }
        }),t._util_.smartScroll = function (e) {
            function s(e) {
                return e && e.nodeType === 9
            }

            function o(e) {
                return t.type(e) == "Window" ? e : s(e) ? e.defaultView || e.parentWindow : !1
            }

            var n = {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}[e], r = e === "scrollLeft", i = {};
            return {
                get: function (r) {
                    var i = o(r);
                    return i ? n in i ? i[n] : t.browser.isStrict && i.document.documentElement[e] || i.document.body[e] : r[e]
                }, set: function (t, n) {
                    if (!t) return;
                    var i = o(t);
                    i ? i.scrollTo(r ? n : this.get(t), r ? this.get(t) : n) : t[e] = n
                }
            }
        },t.dom.extend({
            scrollLeft: function () {
                var e = t._util_.smartScroll("scrollLeft");
                return function (n) {
                    return n && t.check("^(?:number|string)$", "baidu.dom.scrollLeft"), this.size() <= 0 ? n === undefined ? 0 : this : n === undefined ? e.get(this[0]) : e.set(this[0], n) || this
                }
            }()
        }),t.dom.extend({
            scrollTop: function () {
                var e = t._util_.smartScroll("scrollTop");
                return function (n) {
                    return n && t.check("^(?:number|string)$", "baidu.dom.scrollTop"), this.size() <= 0 ? n === undefined ? 0 : this : n === undefined ? e.get(this[0]) : e.set(this[0], n) || this
                }
            }()
        }),t.dom.setPixel = function (e, n, r) {
            typeof r != "undefined" && (t.dom.g(e).style[n] = r + (isNaN(r) ? "" : "px"))
        },t._util_.getDefaultDisplayValue = function () {
            var e = {};
            return function (n) {
                if (e[n]) return e[n];
                var r = document.createElement(n), i, s, o;
                document.body.appendChild(r), i = t.dom(r).getCurrentStyle("display"), document.body.removeChild(r);
                if (i === "" || i === "none") s = document.body.appendChild(document.createElement("iframe")), s.frameBorder = s.width = s.height = 0, o = (s.contentWindow || s.contentDocument).document, o.writeln("<!DOCTYPE html><html><body>"), o.close(), r = o.appendChild(o.createElement(n)), i = t.dom(r).getCurrentStyle("display"), document.body.removeChild(s), s = null;
                return r = null, e[n] = i
            }
        }(),t.dom.extend({
            show: function () {
                var e = [], n, r;
                return this.each(function (i, s) {
                    if (!s.style) return;
                    r = t.dom(s), n = s.style.display, e[i] = r.data("olddisplay"), !e[i] && n === "none" && (s.style.display = ""), s.style.display === "" && t._util_.isHidden(s) && r.data("olddisplay", e[i] = t._util_.getDefaultDisplayValue(s.nodeName))
                }), this.each(function (t, n) {
                    if (!n.style) return;
                    if (n.style.display === "none" || n.style.display === "") n.style.display = e[t] || ""
                })
            }
        }),t.dom.extend({
            siblings: function (e) {
                var n = [];
                return t.forEach(this, function (e) {
                    var r = [], i = [], s = e;
                    while (s = s.previousSibling) s.nodeType == 1 && r.push(s);
                    while (e = e.nextSibling) e.nodeType == 1 && i.push(e);
                    t.merge(n, r.reverse().concat(i))
                }), this.pushStack(t.dom.match(n, e))
            }
        }),t.dom.extend({
            slice: function () {
                var e = Array.prototype.slice;
                return function (n, r) {
                    return t.check("number(,number)?", "baidu.dom.slice"), this.pushStack(e.apply(this, arguments))
                }
            }()
        }),t.dom.extend({
            text: function (e) {
                var n = t.dom, r = this, i = !1, s;
                if (this.size() <= 0) switch (typeof e) {
                    case"undefined":
                        return undefined;
                    default:
                        return r
                }
                var o = function (e) {
                    var t, n = "", r = 0, i = e.nodeType;
                    if (i) if (i === 1 || i === 9 || i === 11) {
                        if (typeof e.textContent == "string") return e.textContent;
                        for (e = e.firstChild; e; e = e.nextSibling) n += o(e)
                    } else if (i === 3 || i === 4) return e.nodeValue;
                    return n
                };
                return t.forEach(r, function (t, r) {
                    var u = n(t);
                    if (s) return;
                    switch (typeof e) {
                        case"undefined":
                            return s = o(t), s;
                        case"number":
                            e = String(e);
                        case"string":
                            i = !0, u.empty().append((t && t.ownerDocument || document).createTextNode(e));
                            break;
                        case"function":
                            i = !0, u.text(e.call(t, r, u.text()))
                    }
                }), i ? r : s
            }
        }),t.dom.extend({
            toggle: function () {
                for (var e = 0, t = this.size(); e < t; e++) {
                    var n = this.eq(e);
                    n.css("display") != "none" ? n.hide() : n.show()
                }
            }
        }),t.dom.extend({
            toggleClass: function (e, n) {
                var r = typeof e, n = typeof n == "undefined" ? n : Boolean(n);
                arguments.length <= 0 && t.forEach(this, function (e) {
                    e.className = ""
                });
                switch (typeof e) {
                    case"string":
                        e = e.replace(/^\s+/g, "").replace(/\s+$/g, "").replace(/\s+/g, " ");
                        var i = e.split(" ");
                        t.forEach(this, function (e) {
                            var t = e.className;
                            for (var r = 0; r < i.length; r++) ~(" " + t + " ").indexOf(" " + i[r] + " ") && typeof n == "undefined" ? t = (" " + t + " ").replace(" " + i[r] + " ", " ") : !~(" " + t + " ").indexOf(" " + i[r] + " ") && typeof n == "undefined" ? t += " " + i[r] : !~(" " + t + " ").indexOf(" " + i[r] + " ") && n === !0 ? t += " " + i[r] : ~(" " + t + " ").indexOf(" " + i[r] + " ") && n === !1 && (t = t.replace(i[r], ""));
                            e.className = t.replace(/^\s+/g, "").replace(/\s+$/g, "")
                        });
                        break;
                    case"function":
                        t.forEach(this, function (r, i) {
                            t.dom(r).toggleClass(e.call(r, i, r.className), n)
                        })
                }
                return this
            }
        }),void function (e) {
            if (e.mousewheel) return;
            var n = /firefox/i.test(navigator.userAgent), r = /msie/i.test(navigator.userAgent);
            t.each({mouseenter: "mouseover", mouseleave: "mouseout"}, function (n, r) {
                e[n] = {
                    bindType: r, pack: function (e) {
                        var r = t.dom.contains;
                        return function (t) {
                            var i = t.relatedTarget;
                            t.type = n;
                            if (!i || i !== this && !r(this, i)) return e.apply(this, arguments)
                        }
                    }
                }
            }), r || t.each({focusin: "focus", focusout: "blur"}, function (t, n) {
                e[t] = {bindType: n, attachElements: "textarea,select,input,button,a"}
            }), e.mousewheel = {
                bindType: n ? "DOMMouseScroll" : "mousewheel", pack: function (e) {
                    return function (t) {
                        var r = t.originalEvent;
                        return t.type = "mousewheel", t.wheelDelta = t.wheelDelta || (n ? r.detail * -40 : r.wheelDelta) || 0, e.apply(this, arguments)
                    }
                }
            }
        }(t.event.special),void function (e) {
            var n = e.queue;
            t.dom.extend({
                triggerHandler: function (e, r, i) {
                    return i && !i.triggerData && (i.triggerData = r), t.forEach(this, function (t) {
                        n.call(t, e, undefined, i)
                    }), this
                }
            })
        }(t._util_.eventBase),void function (e, n) {
            var r = n.special, i = e.queue, s = t.dom, o = !window.addEventListener,
                u = /firefox/i.test(navigator.userAgent), a = {submit: 3, focus: o ? 3 : 2, blur: o ? 3 : u ? 1 : 2},
                f = function (e, t) {
                    var n;
                    document.createEvent ? (n = document.createEvent("HTMLEvents"), n.initEvent(e, !0, !0)) : document.createEventObject && (n = document.createEventObject(), n.type = e);
                    var r = {};
                    if (t) for (var i in t) try {
                        n[i] = t[i]
                    } catch (s) {
                        n.extraData || (n.extraData = r), r[i] = t[i]
                    }
                    return n
                }, l = function (e, t, n) {
                    if (e.dispatchEvent) return e.dispatchEvent(n);
                    if (e.fireEvent) return e.fireEvent("on" + t, n)
                }, c = function (e, t, n, r, o) {
                    var u, c;
                    if (u = f(t, r)) {
                        n && (u.triggerData = n);
                        if (o) i.call(e, t, null, u); else {
                            var h = e.window === window ? 3 : a[t];
                            try {
                                if (h & 1 || !(t in a)) c = l(e, t, u)
                            } catch (p) {
                                s(e).triggerHandler(t, n, u)
                            }
                            if (c !== !1 && h & 2) try {
                                e[t] && e[t]()
                            } catch (p) {
                            }
                        }
                    }
                };
            t.dom.extend({
                trigger: function (e, t, n) {
                    var i;
                    return e in r && (i = r[e]), this.each(function () {
                        c(this, e, t, n, i)
                    }), this
                }
            })
        }(t._util_.eventBase, t.event),t.dom.extend({
            unbind: function (e, t) {
                return this.off(e, t)
            }
        }),t.dom.extend({
            undelegate: function (e, t, n) {
                return this.off(t, e, n)
            }
        }),t.dom.extend({
            unique: function (e) {
                return t.dom(t.array(this.toArray()).unique(e))
            }
        }),t._util_.inArray = function (e, t, n) {
            if (!t) return -1;
            var r = Array.prototype.indexOf, i;
            if (r) return r.call(t, e, n);
            i = t.length, n = n ? n < 0 ? Math.max(0, i + n) : n : 0;
            for (; n < i; n++) if (n in t && t[n] === e) return n;
            return -1
        },t.dom.extend({
            val: function () {
                t._util_.support.dom.select.disabled = !0;
                var e = t._util_, n = e.support.dom.input.value === "on", r = !e.support.dom.opt.disabled,
                    i = ["radio", "checkbox"], s = {
                        option: {
                            get: function (e) {
                                var t = e.attributes.value;
                                return !t || t.specified ? e.value : e.text
                            }
                        }, select: {
                            get: function (n) {
                                var i = n.options, s = n.selectedIndex, o = n.type === "select-one" || s < 0,
                                    u = o ? null : [], a = o ? s + 1 : i.length, f = s < 0 ? a : o ? s : 0, l, c;
                                for (; f < a; f++) {
                                    l = i[f];
                                    if ((l.selected || f === s) && (r ? !l.disabled : l.getAttribute("disabled") === null) && (!l.parentNode.disabled || !e.nodeName(l.parentNode, "optgroup"))) {
                                        c = t.dom(l).val();
                                        if (o) return c;
                                        u.push(c)
                                    }
                                }
                                return u
                            }, set: function (n, r, i) {
                                var s = t.makeArray(i);
                                return t.dom(n).find("option").each(function (n, r) {
                                    r.selected = e.inArray(t.dom(this).val(), s) >= 0
                                }), !s.length && (n.selectedIndex = -1), s
                            }
                        }
                    };
                return !e.support.getSetAttribute && (s.button = e.nodeHook), n || t.forEach(i, function (e) {
                    s[e] = {
                        get: function (e) {
                            return e.getAttribute("value") === null ? "on" : e.value
                        }
                    }
                }), t.forEach(i, function (n) {
                    s[n] = s[n] || {}, s[n].set = function (n, r, i) {
                        if (t.type(i) === "array") return n.checked = e.inArray(t.dom(n).val(), i) >= 0
                    }
                }), function (e) {
                    var n, r;
                    if (e === undefined) {
                        if (!(n = this[0])) return;
                        return r = s[n.type] || s[n.nodeName.toLowerCase()] || {}, r.get && r.get(n, "value") || n.value
                    }
                    return this.each(function (n, i) {
                        if (i.nodeType !== 1) return;
                        var o = t.dom(i), u = t.type(e) === "function" ? e.call(i, n, o.val()) : e;
                        u == null ? u = "" : t.type(u) === "number" ? u += "" : t.type(u) === "array" && (u = t.array(u).map(function (e) {
                            return e == null ? "" : e + ""
                        })), r = s[i.type] || s[i.nodeName.toLowerCase()] || {};
                        if (!r.set || r.set(i, "value", u) === undefined) i.value = u
                    }), this
                }
            }()
        }),t.dom.extend({
            width: function (e) {
                return t._util_.access(this, "width", e, function (e, n, r) {
                    var i = r !== undefined, s = i && parseFloat(r),
                        o = e != null && e == e.window ? "window" : e.nodeType === 9 ? "document" : !1;
                    if (i && s < 0 || isNaN(s)) return;
                    return i && /^(?:\d*\.)?\d+$/.test(r += "") && (r += "px"), o ? t._util_.getWindowOrDocumentWidthOrHeight(e, o, n) : i ? e.style.width = r : t._util_.getWidthOrHeight(e, n)
                })
            }
        }),t.dom.extend({
            end: function () {
                return this.prevObject || t.dom(null)
            }
        }),void function () {
            var e = "blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave mousewheel change select submit keydown keypress keyup error contextmenu".split(" "),
                n = {}, r = function (e) {
                    n[e] = function (t, n) {
                        return n == null && (n = t, t = null), arguments.length > 0 ? this.on(e, null, t, n) : this.trigger(e)
                    }
                };
            for (var i = 0, s = e.length; i < s; i++) r(e[i]);
            t.dom.extend(n)
        }(),t.createChain("fn", function (e) {
            return new t.fn.$Fn(~"function|string".indexOf(t.type(e)) ? e : function () {
            })
        }, function (e) {
            this.fn = e
        }),t.fn.extend({
            bind: function (e) {
                var n = this.fn, r = arguments.length > 1 ? Array.prototype.slice.call(arguments, 1) : null;
                return function () {
                    var i = t.type(n) === "string" ? e[n] : n,
                        s = r ? r.concat(Array.prototype.slice.call(arguments, 0)) : arguments;
                    return i.apply(e || i, s)
                }
            }
        }),t.fn.blank = function () {
        },t.fx = t.fx || {},t.lang.inherits = t.base.inherits,t.fx.Timeline = function (e) {
            t.lang.Class.call(this), this.interval = 16, this.duration = 500, this.dynamic = !0, t.object.extend(this, e)
        },t.lang.inherits(t.fx.Timeline, t.lang.Class, "baidu.fx.Timeline").extend({
            launch: function () {
                var e = this;
                return e.dispatchEvent("onbeforestart"), typeof e.initialize == "function" && e.initialize(), e["btime"] = (new Date).getTime(), e["etime"] = e["btime"] + (e.dynamic ? e.duration : 0), e["pulsed"](), e
            }, "pulsed": function () {
                var e = this, t = (new Date).getTime();
                e.percent = (t - e["btime"]) / e.duration, e.dispatchEvent("onbeforeupdate");
                if (t >= e["etime"]) {
                    typeof e.render == "function" && e.render(e.transition(e.percent = 1)), typeof e.finish == "function" && e.finish(), e.dispatchEvent("onafterfinish"), e.dispose();
                    return
                }
                typeof e.render == "function" && e.render(e.transition(e.percent)), e.dispatchEvent("onafterupdate"), e["timer"] = setTimeout(function () {
                    e["pulsed"]()
                }, e.interval)
            }, transition: function (e) {
                return e
            }, cancel: function () {
                this["timer"] && clearTimeout(this["timer"]), this["etime"] = this["btime"], typeof this.restore == "function" && this.restore(), this.dispatchEvent("oncancel"), this.dispose()
            }, end: function () {
                this["timer"] && clearTimeout(this["timer"]), this["etime"] = this["btime"], this["pulsed"]()
            }
        }),t.fx.create = function (e, n, r) {
            var i = new t.fx.Timeline(n);
            i.element = e, i.__type = r || i.__type, i["original"] = {};
            var s = "baidu_current_effect";
            return i.addEventListener("onbeforestart", function () {
                var e = this, t;
                e.attribName = "att_" + e.__type.replace(/\W/g, "_"), t = e.element.getAttribute(s), e.element.setAttribute(s, (t || "") + "|" + e.guid + "|", 0), e.overlapping || ((t = e.element.getAttribute(e.attribName)) && baiduInstance(t).cancel(), e.element.setAttribute(e.attribName, e.guid, 0))
            }), i["clean"] = function (e) {
                var t = this, n;
                if (e = t.element) e.removeAttribute(t.attribName), n = e.getAttribute(s), n = n.replace("|" + t.guid + "|", ""), n ? e.setAttribute(s, n, 0) : e.removeAttribute(s)
            }, i.addEventListener("oncancel", function () {
                this["clean"](), this["restore"]()
            }), i.addEventListener("onafterfinish", function () {
                this["clean"](), this.restoreAfterFinish && this["restore"]()
            }), i.protect = function (e) {
                this["original"][e] = this.element.style[e]
            }, i["restore"] = function () {
                var e = this["original"], t = this.element.style, n;
                for (var r in e) {
                    n = e[r];
                    if (typeof n == "undefined") continue;
                    t[r] = n, !n && t.removeAttribute ? t.removeAttribute(r) : !n && t.removeProperty && t.removeProperty(r)
                }
            }, i
        },t.fx.current = function (e) {
            if (!(e = t.dom.g(e))) return null;
            var n, r, i = /\|([^\|]+)\|/g;
            do if (r = e.getAttribute("baidu_current_effect")) break; while ((e = e.parentNode) && e.nodeType == 1);
            if (!r) return null;
            if (n = r.match(i)) {
                i = /\|([^\|]+)\|/;
                for (var s = 0; s < n.length; s++) i.test(n[s]), n[s] = t._global_._instances[RegExp.$1]
            }
            return n
        },t.string.extend({
            formatColor: function () {
                var e = /^\#[\da-f]{6}$/i, t = /^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/i, n = {
                    black: "#000000",
                    silver: "#c0c0c0",
                    gray: "#808080",
                    white: "#ffffff",
                    maroon: "#800000",
                    red: "#ff0000",
                    purple: "#800080",
                    fuchsia: "#ff00ff",
                    green: "#008000",
                    lime: "#00ff00",
                    olive: "#808000",
                    yellow: "#ffff0",
                    navy: "#000080",
                    blue: "#0000ff",
                    teal: "#008080",
                    aqua: "#00ffff"
                };
                return function () {
                    var r = this.valueOf();
                    if (e.test(r)) return r;
                    if (t.test(r)) {
                        for (var i, s = 1, r = "#"; s < 4; s++) i = parseInt(RegExp["$" + s]).toString(16), r += ("00" + i).substr(i.length);
                        return r
                    }
                    if (/^\#[\da-f]{3}$/.test(r)) {
                        var o = r.charAt(1), u = r.charAt(2), a = r.charAt(3);
                        return "#" + o + o + u + u + a + a
                    }
                    return n[r] ? n[r] : ""
                }
            }()
        }),t.fx.move = function (e, n) {
            if (!(e = t.dom.g(e)) || t.dom.getStyle(e, "position") == "static") return null;
            n = t.object.extend({x: 0, y: 0}, n || {});
            if (n.x == 0 && n.y == 0) return null;
            var r = t.fx.create(e, t.object.extend({
                initialize: function () {
                    this.protect("top"), this.protect("left"), this.originX = parseInt(t.dom.getStyle(e, "left")) || 0, this.originY = parseInt(t.dom.getStyle(e, "top")) || 0
                }, transition: function (e) {
                    return 1 - Math.pow(1 - e, 2)
                }, render: function (t) {
                    e.style.top = this.y * t + this.originY + "px", e.style.left = this.x * t + this.originX + "px"
                }
            }, n), "baidu.fx.move");
            return r.launch()
        },t.fx.moveTo = function (e, n, r) {
            if (!(e = t.dom.g(e)) || t.dom.getStyle(e, "position") == "static" || typeof n != "object") return null;
            var i = [n[0] || n.x || 0, n[1] || n.y || 0], s = parseInt(t.dom.getStyle(e, "left")) || 0,
                o = parseInt(t.dom.getStyle(e, "top")) || 0,
                u = t.fx.move(e, t.object.extend({x: i[0] - s, y: i[1] - o}, r || {}));
            return u
        },t.fx.scrollBy = function (e, n, r) {
            if (!(e = t.dom.g(e)) || typeof n != "object") return null;
            var i = {}, s = {};
            i.x = n[0] || n.x || 0, i.y = n[1] || n.y || 0;
            var o = t.fx.create(e, t.object.extend({
                initialize: function () {
                    var t = s.sTop = e.scrollTop, n = s.sLeft = e.scrollLeft;
                    s.sx = Math.min(e.scrollWidth - e.clientWidth - n, i.x), s.sy = Math.min(e.scrollHeight - e.clientHeight - t, i.y)
                }, transition: function (e) {
                    return 1 - Math.pow(1 - e, 2)
                }, render: function (t) {
                    e.scrollTop = s.sy * t + s.sTop, e.scrollLeft = s.sx * t + s.sLeft
                }, restore: function () {
                    e.scrollTop = s.sTop, e.scrollLeft = s.sLeft
                }
            }, r), "baidu.fx.scroll");
            return o.launch()
        },t.fx.scrollTo = function (e, n, r) {
            if (!(e = t.dom.g(e)) || typeof n != "object") return null;
            var i = {};
            return i.x = (n[0] || n.x || 0) - e.scrollLeft, i.y = (n[1] || n.y || 0) - e.scrollTop, t.fx.scrollBy(e, i, r)
        },t._util_.smartAjax = t._util_.smartAjax || function (e) {
            return function (n, r, i, s) {
                t.type(r) === "function" && (s = s || i, i = r, r = undefined), t.ajax({
                    type: e,
                    url: n,
                    data: r,
                    success: i,
                    dataType: s
                })
            }
        },t.get = t.get || t._util_.smartAjax("get"),t.global.get = function (e) {
            return t.global(e)
        },t.global.set = function (e, n, r) {
            return t.global(e, n, !r)
        },t.global.getZIndex = function (e, n) {
            var r = t.global.get("zIndex");
            return e && (r[e] = r[e] + (n || 1)), r[e]
        },t.global.set("zIndex", {
            popup: 5e4,
            dialog: 1e3
        }, !0),t.i18n = t.i18n || {},t.i18n.cultures = t.i18n.cultures || {},t.i18n.cultures["zh-CN"] = t.object.extend(t.i18n.cultures["zh-CN"] || {}, function () {
            var e = "%u4E00,%u4E8C,%u4E09,%u56DB,%u4E94,%u516D,%u4E03,%u516B,%u4E5D,%u5341".split(",");
            return {
                calendar: {
                    dateFormat: "yyyy-MM-dd",
                    titleNames: "#{yyyy}" + unescape("%u5E74") + "&nbsp;#{MM}" + unescape("%u6708"),
                    monthNamesShort: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
                    monthNames: function () {
                        var t = e.length, n = [];
                        for (var r = 0; r < 12; r++) n.push(unescape(e[r] || e[t - 1] + e[r - t]));
                        return n
                    }(),
                    dayNames: function () {
                        var t = {mon: 0, tue: 1, wed: 2, thu: 3, fri: 4, sat: 5, sun: "%u65E5"};
                        for (var n in t) t[n] = unescape(e[t[n]] || t[n]);
                        return t
                    }()
                },
                timeZone: 8,
                whitespace: new RegExp("(^[\\s\\t\\xa0\\u3000]+)|([\\u3000\\xa0\\s\\t]+$)", "g"),
                number: {
                    group: ",",
                    groupLength: 3,
                    decimal: ".",
                    positive: "",
                    negative: "-",
                    _format: function (e, n) {
                        return t.i18n.number._format(e, {
                            group: this.group,
                            groupLength: this.groupLength,
                            decimal: this.decimal,
                            symbol: n ? this.negative : this.positive
                        })
                    }
                },
                currency: {symbol: unescape("%uFFE5")},
                language: function () {
                    var e = {
                        ok: "%u786E%u5B9A",
                        cancel: "%u53D6%u6D88",
                        signin: "%u6CE8%u518C",
                        signup: "%u767B%u5F55"
                    };
                    for (var t in e) e[t] = unescape(e[t]);
                    return e
                }()
            }
        }()),t.i18n.currentLocale = "zh-CN",t.i18n.date = t.i18n.date || {
            getDaysInMonth: function (e, n) {
                var r = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
                return n == 1 && t.i18n.date.isLeapYear(e) ? 29 : r[n]
            }, isLeapYear: function (e) {
                return !(e % 400) || !(e % 4) && !!(e % 100)
            }, toLocaleDate: function (e, n, r) {
                return this._basicDate(e, n, r || t.i18n.currentLocale)
            }, _basicDate: function (e, n, r) {
                var i = t.i18n.cultures[r || t.i18n.currentLocale].timeZone, s = i * 60, o, u, a = e.getTime();
                return n ? (o = t.i18n.cultures[n].timeZone, u = o * 60) : (u = -1 * e.getTimezoneOffset(), o = u / 60), new Date(o != i ? a + (s - u) * 6e4 : a)
            }, format: function (e, n) {
                var r = t.i18n.cultures[n || t.i18n.currentLocale];
                return t.date.format(t.i18n.date.toLocaleDate(e, "", n), r.calendar.dateFormat)
            }
        },t.isDate = function (e) {
            return t.type(e) == "date" && e.toString() != "Invalid Date" && !isNaN(e)
        },t.isDocument = function (e) {
            return t.type(e) == "Document"
        },t.isElement = function (e) {
            return t.type(e) == "HTMLElement"
        },t.isNumber = function (e) {
            return t.type(e) == "number" && isFinite(e)
        },t.isObject = function (e) {
            return typeof e == "function" || typeof e == "object" && e != null
        },t.isPlainObject = function (e) {
            var n, r = Object.prototype.hasOwnProperty;
            if (t.type(e) != "object") return !1;
            if (e.constructor && !r.call(e, "constructor") && !r.call(e.constructor.prototype, "isPrototypeOf")) return !1;
            for (n in e) break;
            return e.item && typeof e.length == "number" ? !1 : n === undefined || r.call(e, n)
        },t.isWindow = function (e) {
            return t.type(e) == "Window"
        },t.json = t.json || {},t.json.parse = function (e) {
            return (new Function("return (" + e + ")"))()
        },t.json.stringify = function () {
            function n(t) {
                return /["\\\x00-\x1f]/.test(t) && (t = t.replace(/["\\\x00-\x1f]/g, function (t) {
                    var n = e[t];
                    return n ? n : (n = t.charCodeAt(), "\\u00" + Math.floor(n / 16).toString(16) + (n % 16).toString(16))
                })), '"' + t + '"'
            }

            function r(e) {
                var n = ["["], r = e.length, i, s, o;
                for (s = 0; s < r; s++) {
                    o = e[s];
                    switch (typeof o) {
                        case"undefined":
                        case"function":
                        case"unknown":
                            break;
                        default:
                            i && n.push(","), n.push(t.json.stringify(o)), i = 1
                    }
                }
                return n.push("]"), n.join("")
            }

            function i(e) {
                return e < 10 ? "0" + e : e
            }

            function s(e) {
                return '"' + e.getFullYear() + "-" + i(e.getMonth() + 1) + "-" + i(e.getDate()) + "T" + i(e.getHours()) + ":" + i(e.getMinutes()) + ":" + i(e.getSeconds()) + '"'
            }

            var e = {"\b": "\\b", "	": "\\t", "\n": "\\n", "\f": "\\f", "\r": "\\r", '"': '\\"', "\\": "\\\\"};
            return function (e) {
                switch (typeof e) {
                    case"undefined":
                        return "undefined";
                    case"number":
                        return isFinite(e) ? String(e) : "null";
                    case"string":
                        return n(e);
                    case"boolean":
                        return String(e);
                    default:
                        if (e === null) return "null";
                        if (t.type(e) === "array") return r(e);
                        if (t.type(e) === "date") return s(e);
                        var i = ["{"], o = t.json.stringify, u, a;
                        for (var f in e) if (Object.prototype.hasOwnProperty.call(e, f)) {
                            a = e[f];
                            switch (typeof a) {
                                case"undefined":
                                case"unknown":
                                case"function":
                                    break;
                                default:
                                    u && i.push(","), u = 1, i.push(o(f) + ":" + o(a))
                            }
                        }
                        return i.push("}"), i.join("")
                }
            }
        }(),t.lang.createClass = t.createClass,t.lang.guid = function () {
            return t.id()
        },t.lang.isArray = t.isArray,t.lang.isDate = t.isDate,t.lang.isElement = t.isElement,t.lang.isObject = t.isObject,t.lang.isString = t.isString,t.lang.register = t.base.register,t.lang.toArray = function (e) {
            if (e === null || e === undefined) return [];
            if (t.lang.isArray(e)) return e;
            if (typeof e.length != "number" || typeof e == "string" || t.lang.isFunction(e)) return [e];
            if (e.item) {
                var n = e.length, r = new Array(n);
                while (n--) r[n] = e[n];
                return r
            }
            return [].slice.call(e)
        },t.number.extend({
            comma: function (e) {
                var t = this;
                if (!e || e < 1) e = 3;
                return t = String(t).split("."), t[0] = t[0].replace(new RegExp("(\\d)(?=(\\d{" + e + "})+$)", "ig"), "$1,"), t.join(".")
            }
        }),t.number.randomInt = function (e, t) {
            return Math.floor(Math.random() * (t - e + 1) + e)
        },t.object.clone = function (e) {
            var n = e, r, i;
            if (!e || e instanceof Number || e instanceof String || e instanceof Boolean) return n;
            if (t.lang.isArray(e)) {
                n = [];
                var s = 0;
                for (r = 0, i = e.length; r < i; r++) n[s++] = t.object.clone(e[r])
            } else if (t.object.isPlain(e)) {
                n = {};
                for (r in e) e.hasOwnProperty(r) && (n[r] = t.object.clone(e[r]))
            }
            return n
        },t.object.each = function (e, t) {
            var n, r, i;
            if ("function" == typeof t) for (r in e) if (e.hasOwnProperty(r)) {
                i = e[r], n = t.call(e, i, r);
                if (n === !1) break
            }
            return e
        },t.object.isEmpty = function (e) {
            var t = !0;
            if ("[object Array]" === Object.prototype.toString.call(e)) t = !e.length; else {
                e = new Object(e);
                for (var n in e) return !1
            }
            return t
        },t.object.keys = function (e) {
            var t = [], n = 0, r;
            for (r in e) e.hasOwnProperty(r) && (t[n++] = r);
            return t
        },t.object.map = function (e, t) {
            var n = {};
            for (var r in e) e.hasOwnProperty(r) && (n[r] = t(e[r], r));
            return n
        },t.object.merge = function () {
            function e(e) {
                return t.lang.isObject(e) && !t.lang.isFunction(e)
            }

            function n(n, r, i, s, o) {
                if (r.hasOwnProperty(i)) if (o && e(n[i])) t.object.merge(n[i], r[i], {
                    overwrite: s,
                    recursive: o
                }); else if (s || !(i in n)) n[i] = r[i]
            }

            return function (e, t, r) {
                var i = 0, s = r || {}, o = s.overwrite, u = s.whiteList, a = s.recursive, f;
                if (u && u.length) {
                    f = u.length;
                    for (; i < f; ++i) n(e, t, u[i], o, a)
                } else for (i in t) n(e, t, i, o, a);
                return e
            }
        }(),t.object.values = function (e) {
            var t = [], n = 0, r;
            for (r in e) e.hasOwnProperty(r) && (t[n++] = e[r]);
            return t
        },t.page.getHeight = function () {
            var e = document, t = e.body, n = e.documentElement,
                r = e.compatMode == "BackCompat" ? t : e.documentElement;
            return Math.max(n.scrollHeight, t.scrollHeight, r.clientHeight)
        },t.page.getViewHeight = function () {
            var e = document, n = t.browser.ie || 1,
                r = e.compatMode === "BackCompat" && n < 9 ? e.body : e.documentElement;
            return r.clientHeight
        },t.page.getViewWidth = function () {
            var e = document, t = e.compatMode == "BackCompat" ? e.body : e.documentElement;
            return t.clientWidth
        },t.page.getWidth = function () {
            var e = document, t = e.body, n = e.documentElement,
                r = e.compatMode == "BackCompat" ? t : e.documentElement;
            return Math.max(n.scrollWidth, t.scrollWidth, r.clientWidth)
        },t.platform = t.platform || function () {
            var e = navigator.userAgent, n = function () {
            };
            return t.forEach("Android iPad iPhone Linux Macintosh Windows X11".split(" "), function (r) {
                var i = r.charAt(0).toUpperCase() + r.toLowerCase().substr(1);
                t["is" + i] = n["is" + i] = !!~e.indexOf(r)
            }), n
        }(),t.plugin = function (e, n, r, i) {
            var s = t.isPlainObject(n), o;
            return s || (i = r, r = n), t.type(r) != "function" && (r = undefined), t.type(i) != "function" && (i = undefined), o = t.createChain(e, r, i), s && o.extend(n), o
        },t.post = t.post || t._util_.smartAjax("post"),t.setBack = function (e, t) {
            return e._back_ = t, e.getBack = function () {
                return this._back_
            }, e
        },t.createChain("sio", function (e) {
            switch (typeof e) {
                case"string":
                    return new t.sio.$Sio(e)
            }
        }, function (e) {
            this.url = e
        }),t.sio._createScriptTag = function (e, t, n) {
            e.setAttribute("type", "text/javascript"), n && e.setAttribute("charset", n), e.setAttribute("src", t), document.getElementsByTagName("head")[0].appendChild(e)
        },t.sio._removeScriptTag = function (e) {
            if (e.clearAttributes) e.clearAttributes(); else for (var t in e) e.hasOwnProperty(t) && delete e[t];
            e && e.parentNode && e.parentNode.removeChild(e), e = null
        },t.sio.extend({
            callByBrowser: function (e, n) {
                var r = this.url, i = document.createElement("SCRIPT"), s = 0, o = n || {}, u = o.charset,
                    a = e || function () {
                    }, f = o.timeOut || 0, l;
                i.onload = i.onreadystatechange = function () {
                    if (s) return;
                    var e = i.readyState;
                    if ("undefined" == typeof e || e == "loaded" || e == "complete") {
                        s = 1;
                        try {
                            a(), clearTimeout(l)
                        } finally {
                            i.onload = i.onreadystatechange = null, t.sio._removeScriptTag(i)
                        }
                    }
                }, f && (l = setTimeout(function () {
                    i.onload = i.onreadystatechange = null, t.sio._removeScriptTag(i), o.onfailure && o.onfailure()
                }, f)), t.sio._createScriptTag(i, r, u)
            }
        }),t.sio.extend({
            callByServer: function (e, n) {
                function v(n) {
                    return function () {
                        try {
                            n ? a.onfailure && a.onfailure() : (e.apply(window, arguments), clearTimeout(h)), window[o] = null, delete window[o]
                        } catch (r) {
                        } finally {
                            t.sio._removeScriptTag(i)
                        }
                    }
                }

                var r = this.url, i = document.createElement("SCRIPT"), s = "bd__cbs__", o, u, a = n || {},
                    f = a.charset, l = a.queryField || "callback", c = a.timeOut || 0, h,
                    p = new RegExp("(\\?|&)" + l + "=([^&]*)"), d;
                if (t.lang.isFunction(e)) o = s + Math.floor(Math.random() * 2147483648).toString(36), window[o] = v(0); else if (t.lang.isString(e)) o = e; else if (d = p.exec(r)) o = d[2];
                c && (h = setTimeout(v(1), c)), r = r.replace(p, "$1" + l + "=" + o), r.search(p) < 0 && (r += (r.indexOf("?") < 0 ? "?" : "&") + l + "=" + o), t.sio._createScriptTag(i, r, f)
            }
        }),t.sio.extend({
            log: function () {
                var e = this.url, t = new Image,
                    n = "tangram_sio_log_" + Math.floor(Math.random() * 2147483648).toString(36);
                window[n] = t, t.onload = t.onerror = t.onabort = function () {
                    t.onload = t.onerror = t.onabort = null, window[n] = null, t = null
                }, t.src = e
            }
        }),t.string.extend({
            decodeHTML: function () {
                var e = this.replace(/&quot;/g, '"').replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&");
                return e.replace(/&#([\d]+);/g, function (e, t) {
                    return String.fromCharCode(parseInt(t, 10))
                })
            }
        }),t.string.extend({
            encodeHTML: function () {
                return this.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;")
            }
        }),t.string.extend({
            format: function (e) {
                var t = this.valueOf(), n = Array.prototype.slice.call(arguments, 0), r = Object.prototype.toString;
                return n.length ? (n = n.length == 1 ? e !== null && /\[object Array\]|\[object Object\]/.test(r.call(e)) ? e : n : n, t.replace(/#\{(.+?)\}/g, function (e, t) {
                    var i = n[t];
                    return "[object Function]" == r.call(i) && (i = i(t)), "undefined" == typeof i ? "" : i
                })) : t
            }
        }),t.string.extend({
            getByteLength: function () {
                return this.replace(/[^\x00-\xff]/g, "ci").length
            }
        }),t.string.extend({
            stripTags: function () {
                return (this || "").replace(/<[^>]+>/g, "")
            }
        }),t.string.extend({
            subByte: function (e, n) {
                t.check("number(,string)?$", "baidu.string.subByte");
                if (e < 0 || this.getByteLength() <= e) return this.valueOf();
                var r = this.substr(0, e).replace(/([^\x00-\xff])/g, "$1 ").substr(0, e).replace(/[^\x00-\xff]$/, "").replace(/([^\x00-\xff]) /g, "$1");
                return r + (n || "")
            }
        }),t.string.extend({
            toHalfWidth: function () {
                return this.replace(/[\uFF01-\uFF5E]/g, function (e) {
                    return String.fromCharCode(e.charCodeAt(0) - 65248)
                }).replace(/\u3000/g, " ")
            }
        }),t.string.extend({
            wbr: function () {
                return this.replace(/(?:<[^>]+>)|(?:&#?[0-9a-z]{2,6};)|(.{1})/gi, "$&<wbr>").replace(/><wbr>/g, ">")
            }
        }),t.swf = t.swf || {},t.swf.version = function () {
            var e = navigator;
            if (e.plugins && e.mimeTypes.length) {
                var t = e.plugins["Shockwave Flash"];
                if (t && t.description) return t.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s)+r/, ".") + ".0"
            } else if (window.ActiveXObject && !window.opera) for (var n = 12; n >= 2; n--) try {
                var r = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + n);
                if (r) {
                    var i = r.GetVariable("$version");
                    return i.replace(/WIN/g, "").replace(/,/g, ".")
                }
            } catch (s) {
            }
        }(),t.swf.createHTML = function (e) {
            e = e || {};
            var n = t.swf.version, r = e.ver || "6.0.0", i, s, o, u, a, f, l = {}, c = t.string.encodeHTML;
            for (u in e) l[u] = e[u];
            e = l;
            if (!n) return "";
            n = n.split("."), r = r.split(".");
            for (o = 0; o < 3; o++) {
                i = parseInt(n[o], 10), s = parseInt(r[o], 10);
                if (s < i) break;
                if (s > i) return ""
            }
            var h = e.vars, p = ["classid", "codebase", "id", "width", "height", "align"];
            e.align = e.align || "middle", e.classid = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000", e.codebase = "http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0", e.movie = e.url || "", delete e.vars, delete e.url;
            if ("string" == typeof h) e.flashvars = h; else {
                var d = [];
                for (u in h) f = h[u], d.push(u + "=" + encodeURIComponent(f));
                e.flashvars = d.join("&")
            }
            var v = ["<object "];
            for (o = 0, a = p.length; o < a; o++) f = p[o], v.push(" ", f, '="', c(e[f]), '"');
            v.push(">");
            var m = {
                wmode: 1,
                scale: 1,
                quality: 1,
                play: 1,
                loop: 1,
                menu: 1,
                salign: 1,
                bgcolor: 1,
                base: 1,
                allowscriptaccess: 1,
                allownetworking: 1,
                allowfullscreen: 1,
                seamlesstabbing: 1,
                devicefont: 1,
                swliveconnect: 1,
                flashvars: 1,
                movie: 1
            };
            for (u in e) f = e[u], u = u.toLowerCase(), m[u] && (f || f === !1 || f === 0) && v.push('<param name="' + u + '" value="' + c(f) + '" />');
            e.src = e.movie, e.name = e.id, delete e.id, delete e.movie, delete e.classid, delete e.codebase, e.type = "application/x-shockwave-flash", e.pluginspage = "http://www.macromedia.com/go/getflashplayer", v.push("<embed");
            var g;
            for (u in e) {
                f = e[u];
                if (f || f === !1 || f === 0) {
                    if ((new RegExp("^salign$", "i")).test(u)) {
                        g = f;
                        continue
                    }
                    v.push(" ", u, '="', c(f), '"')
                }
            }
            return g && v.push(' salign="', c(g), '"'), v.push("></embed></object>"), v.join("")
        },t.swf.create = function (e, n) {
            e = e || {};
            var r = t.swf.createHTML(e) || e.errorMessage || "";
            n && "string" == typeof n && (n = document.getElementById(n)), t.dom.insertHTML(n || document.body, "beforeEnd", r)
        },t.swf.getMovie = function (e) {
            var n = document[e], r;
            return t.browser.ie == 9 ? n && n.length ? (r = t.array.remove(t.lang.toArray(n), function (e) {
                return e.tagName.toLowerCase() != "embed"
            })).length == 1 ? r[0] : r : n : n || window[e]
        },t.swf.Proxy = function (e, n, r) {
            var i = this, s = this._flash = t.swf.getMovie(e), o;
            if (!n) return this;
            o = setInterval(function () {
                try {
                    s[n] && (i._initialized = !0, clearInterval(o), r && r())
                } catch (e) {
                }
            }, 100)
        },t.swf.Proxy.prototype.getFlash = function () {
            return this._flash
        },t.swf.Proxy.prototype.isReady = function () {
            return !!this._initialized
        },t.swf.Proxy.prototype.call = function (e, t) {
            try {
                var n = this.getFlash(), r = Array.prototype.slice.call(arguments);
                r.shift(), n[e] && n[e].apply(n, r)
            } catch (i) {
            }
        },function (e) {
            var n = document.createElement("div");
            e.inlineBlockNeedsLayout = !1, e.shrinkWrapBlocks = !1, t(document).ready(function () {
                var t = document.body, r = document.createElement("div");
                r.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px", t.appendChild(r).appendChild(n), typeof n.style.zoom != "undefined" && (n.style.cssText = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;width:1px;padding:1px;display:inline;zoom:1", e.inlineBlockNeedsLayout = n.offsetWidth === 3, n.style.display = "block", n.innerHTML = "<div></div>", n.firstChild.style.width = "5px", e.shrinkWrapBlocks = n.offsetWidth !== 3), t.removeChild(r), r = n = t = null
            })
        }(t._util_.support),t
    }();
    t.T = r
});